首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF6模型和WebAPI 2.2 + OData 4.0模型是如何关联的?

EF6模型和WebAPI 2.2 + OData 4.0模型是如何关联的?
EN

Stack Overflow用户
提问于 2015-01-06 17:22:20
回答 1查看 1.4K关注 0票数 4

自从我和EF和OData合作已经有几年了。当时,OData在WebAPI上被限制在一些URL过滤器上,但即使是在MVC 4 RTM之前的最后一分钟,也是如此。

很多事情都变了。

现在我有了一个模型--第一个带有EDMX文件的EF6项目,因为我喜欢可视化地规划我的模型。我还在为这个应用程序构建一个OData服务,使用WebAPI 2.2和OData 4.0。

下面是对这个问题的评论:

不幸的是,此时EF使用的EDM模型与Web使用的EDM模型不同。

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数据库模型,那么如何分离和拥有两个模型呢?

我很难找到/信任在线资源,因为这些技术发展得太快了。

卢克

EN

回答 1

Stack Overflow用户

发布于 2015-01-08 13:58:44

这是我到目前为止学到的东西。

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

截至2015年1月,重要的,既不支持v4,也不支持v4。元数据是不同的,我认为是因为缺乏正式的关系。这使得v4目前不太有吸引力,特别是当WCF数据服务可以在几秒钟内从现有的EDMX构建完整的服务时。

更新

1/

代码-首先来自现有的:

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

2/

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

卢克

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27803840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档