C#将实体框架代码优先DbContext转换为Microsoft.OData.Edm.IEdmModel

时间:2018-07-16 16:54:58

标签: c# entity-framework dbcontext edmx dbset

我有一个使用实体框架代码优先方法创建的DbContext类。这不是一个ASP.NET MVC / API项目。

此DbContext类具有类似的对象:

public virtual DbSet<Teacher> Teachers { get; set; }
public virtual DbSet<Student> Students { get; set; }
  

老师班上有 ICollection 学生{get;设置;}

现在,我想对已明确为其创建Microsoft.OData.Edm.IEdmModel的DbContext的DbSet对象执行oData查询,

ODataModelBuilder oDataModelBuilder = new ODataConventionModelBuilder();
oDataModelBuilder.EntitySet<Teacher>("Teachers");
oDataModelBuilder.EntitySet<Student>("Students");
IEdmModel edmModel = oDataModelBuilder.GetEdmModel();

然后,在下面的代码中使用IEdmModel之上的对象,以从中生成ODataQueryOptions ODataQueryContext。

ODataQueryContext oDataQueryContext = new ODataQueryContext(edmModel, typeof(Teacher), null);
return new ODataQueryOptions(oDataQueryContext, httpRequestMessage);

是否有任何方法可以直接从基于Entity Framework 6代码优先方法(也使用Fluent API)的DbContext类生成IEdmModel?

我已经检查了以下链接中给出的示例,但由于它们不能转换为Microsoft.OData.Edm.IEdmModel,而是转换为Microsoft.Data.Edm名称空间中的IEdmModel,因此它们无法正常工作 strong>。

How do you build OData IEdmModel from Entity Framework model

https://gist.github.com/raghuramn/5864013

0 个答案:

没有答案