加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – EF6模型和WebAPI 2.2 OData 4.0模型如何相关?

发布时间:2020-12-16 09:54:46 所属栏目:asp.Net 来源:网络整理
导读:我和EF和OData合作已经有几年了.当时,OData在WebAPI上仅限于某些URL过滤器,但即使是在MVC 4 RTM之前的最后一分钟. 很多都改变了. 现在我有一个带有EDMX文件的模型优先EF6项目,因为我喜欢在视觉上规划我的模型.我也在使用WebAPI 2.2和OData 4.0为这个应用程序
我和EF和OData合作已经有几年了.当时,OData在WebAPI上仅限于某些URL过滤器,但即使是在MVC 4 RTM之前的最后一分钟.

很多都改变了.

现在我有一个带有EDMX文件的模型优先EF6项目,因为我喜欢在视觉上规划我的模型.我也在使用WebAPI 2.2和OData 4.0为这个应用程序构建OData服务.

对以下问题有评论:

“Unfortunately,at this time the EDM model used by EF is different from the EDM model used by Web API OData.”

OData exception The complex type ‘WebTools.Order’ refers to the entity type ‘WebTools.Customer’ through the property ‘Customer’

这是可以理解的,分离最适合公共API.

但是,我很困惑,因为Web上的快速入门教程(见下文)似乎对OData和数据库使用相同的EF(代码优先)模型.

> http://blogs.msdn.com/b/webdev/archive/2014/03/13/getting-started-with-asp-net-web-api-2-2-for-odata-v4-0.aspx
> http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/create-an-odata-v4-endpoint

这是否意味着模型不再不同,上面的评论是旧的?或者它是否意味着如果我想暴露我的数据库模型,我必须首先执行代码?

由于教程似乎显示出暴露单个EF数据库模型,那么如何分离和拥有两个模型呢?

我很难找到/信任在线资源,因为这些技术如此快速发展.

卢克

解决方法

这是我到目前为止所学到的.

> OData v4不支持插入现有的模型优先EDMX模型类.
>它确实支持暴露从POCO类构建的“任意”模型,实体之间的关系不用如此强的术语表达,但v4模型更像是一个对象层次结构,甚至可以有一个单一的根“节点”和所有子节点项目和项目集合可以分支,图形.
>使用路由规则和模型和控制器操作名称的一些简单约定,这一切都更加糟糕.
>因此可以围绕内存结构或no-sql或由其他服务组成构建OData服务.
>但是,当涉及到SQL源和EF时,必须将模型结合在一起才能使IQueryable逻辑流动,而且还必须用于字段名称映射.
>由于OData v4模型构建器仅支持POCO类,因此必须首先使用代码.
>因此,带有EF的OData v4仅限于绿地项目或那些认为在v4中有足够的增值值以保证重建代码优先的项目.
>我正在研究现有数据库中代码优先的自动POCO生成.这将允许EDMX生成SQL数据库,然后通过DB的自动POCO生成将其“往返”回代码.从来没有使用过代码优先,我不确定这是否可以做到.

重要信息截至2015年1月,Excel或LinqPad均不支持v4.元数据是不同的,我认为由于缺乏“正式”关系.这使得v4目前不是很吸引人,特别是当WCF数据服务可以在几秒钟内从现有的EDMX构建完整服务时.

更新

1 /

现有代码优先:

http://msdn.microsoft.com/en-us/library/jj200620.aspx

2 /

您可以通过应用[NotMapped]或modelBuilder.Ignore< InMemClass>();从EF模型中排除实体,即使它们在其他实体中被引用.如果使用流畅的API.

卢克

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读