OdataToEntity.EfCore 2.7.0

There is a newer version of this package available.
See the version list below for details.
Install-Package OdataToEntity.EfCore -Version 2.7.0
dotnet add package OdataToEntity.EfCore --version 2.7.0
<PackageReference Include="OdataToEntity.EfCore" Version="2.7.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add OdataToEntity.EfCore --version 2.7.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: OdataToEntity.EfCore, 2.7.0"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install OdataToEntity.EfCore as a Cake Addin
#addin nuget:?package=OdataToEntity.EfCore&version=2.7.0

// Install OdataToEntity.EfCore as a Cake Tool
#tool nuget:?package=OdataToEntity.EfCore&version=2.7.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

OdataToEntity

Wiki
Travis

OData .net core

This library provides a simple approach to creating OData service from ORM data context. This translates the OData query into an expression tree and passes it to the ORM framework. Supported ORM: Entity Framework 6, Entity Framework Core, Linq2Db

public sealed class OrderContext : DbContext
{
    public DbSet<Customer> Customers { get; set; }
    public DbSet<Order> Orders { get; set; }

    public IEnumerable<Order> GetOrders(int? id, String name, OrderStatus? status) => throw new NotImplementedException();
}

Build OData EdmModel

Buid from entity classes marked data annotation attribute, the general case for all providers

//Create adapter data access, where OrderContext your DbContext
var dataAdapter = new OeEfCoreDataAdapter<Model.OrderContext>();
//Build OData Edm Model
EdmModel edmModel = dataAdapter.BuildEdmModel();

Build from the Entity Framework Core where the data context uses the "Fluent API" (without using attributes)

//Create adapter data access, where OrderContext your DbContext
var dataAdapter = new OeEfCoreDataAdapter<Model.OrderContext>();
//Build OData Edm Model
EdmModel edmModel = dataAdapter.BuildEdmModelFromEfCoreModel();

Build from the Entity Framework 6 where the data context uses the "Fluent API" (without using attributes)

//Create adapter data access, where OrderEf6Context your DbContext
var dataAdapter = new OeEf6DataAdapter<OrderEf6Context>();
//Build OData Edm Model
EdmModel edmModel = dataAdapter.BuildEdmModelFromEf6Model();

Build from multiple data contexts

//Create referenced data adapter
var refDataAdapter = new OeEfCoreDataAdapter<Model.Order2Context>();
//Build referenced Edm Model
EdmModel refModel = refDataAdapter.BuildEdmModel();

//Create root data adapter
var rootDataAdapter = new OeEfCoreDataAdapter<Model.OrderContext>();
//Build root Edm Model
EdmModel rootModel = rootDataAdapter.BuildEdmModel(refModel);

Sample OData query

By default used cached queries parsed to expression tree, which on existing tests allows you to increase the performance up to three times. For disable this feature, you need pass in base constructor OeDataAdapter parameter new OeQueryCache(false). The query is parameterized (i.e. constant expressions are replaced with variables) except null value, therefore for best performance must use database null semantics. For Ef Core method UseRelationalNulls class RelationalDbContextOptionsBuilder<TBuilder, TExtension>, for Ef6 property UseDatabaseNullSemantics class DbContextConfiguration.

//Create adapter data access, where OrderContext your DbContext
var dataAdapter = new OeEfCoreDataAdapter<Model.OrderContext>();
//Create query parser
var parser = new OeParser(new Uri("http://dummy"), dataAdapter.BuildEdmModel());
//Query
var uri = new Uri("http://dummy/Orders?$select=Name");
//The result of the query
var response = new MemoryStream();
//Execute query
await parser.ExecuteGetAsync(uri, OeRequestHeaders.JsonDefault, response, CancellationToken.None);

Dynamic data context

Create server from only connection string

NuGet packages (1)

Showing the top 1 NuGet packages that depend on OdataToEntity.EfCore:

Package Downloads
OdataToEntity.EfCore.DynamicDataContext

Access database without data context.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.8.0 245 7/23/2021
2.7.0 151 3/7/2021
2.6.1 357 1/9/2021
2.6.0 250 11/13/2020
2.5.1 366 8/8/2020
2.5.0.2 832 5/24/2020
2.5.0.1 325 2/29/2020
2.5.0 293 2/26/2020
2.4.0 527 9/28/2019
2.3.1 433 6/4/2019
2.3.0 424 5/2/2019
2.2.0 414 2/3/2019
2.1.0 430 12/2/2018
2.0.1 433 10/31/2018
2.0.0 491 8/18/2018
2.0.0-beta1 411 8/15/2018
2.0.0-beta 429 8/12/2018
1.6.2 546 7/17/2018
1.6.0 561 7/15/2018
1.5.0 529 6/3/2018
1.4.1 555 4/1/2018
1.4.0 533 3/4/2018
1.3.0 1,768 11/5/2017
1.2.0 736 8/28/2017
1.1.1.1 637 8/1/2017
1.1.1 654 8/1/2017
1.1.0 739 7/14/2017
1.0.0.1 720 11/23/2016
1.0.0 754 11/18/2016