实体框架和子表组合键

时间:2018-08-01 17:49:57

标签: entity-framework odata entity-framework-core

我在EF 2.1 Core上有多个问题,在我当前的生产EF6实现中都不存在这两个问题。我将详细说明的第二个问题要复杂一些,但可以将其保存在另一篇文章中。

出于本文的目的,我具有两个SQL Server表的父子关系;

Device Table
DeviceID  int (autoincrement key)
Name  varchar(50)
More fields...

Events Table
DeviceID { half composite key, one to many relationship with parent}
EventStamp DateTime { half of composite key }
EventText varchar(max)
More fields...

因此,在我的上一个迭代(EF6)中,我在VS 2015(数据库优先实现)中运行了脚手架,它为我提供了所有的类以及数据库上下文。我将它们放置在Web api 2应用程序中,定义了ODATA 4 IEDMModel,使用了模型生成器,就像魔术一样,我拥有了一个OData 4 Web服务,该服务将我的所有信息提供给自定义移动应用程序...

在上一个应用中,我可以使用“ http://server/devices”之类的服务,并且可以获得所有设备的完整列表。加(N),其中N是一个数字,将找到特定的单个索引实体。然后,我可以追加... devices(4)/ events ...,然后我将获得该设备的所有事件...并使用一些odata查询语法,可以从事件实体中获取特定的详细信息...美丽!简单的ODATA 4查询语法才是真正的强大功能!包括逆转方案...首先从事件进行逆向查找非常有帮助。

为了使Odata 4正常工作,我必须定义EDM模型。在EF6中,一切正常。在EF Core 2.1中。 “事件”表在运行Web服务时引发错误。表“事件”没有主键。实际上这是不正确的,在使用ODATA 4的EF6以前的版本中这不是问题。我尝试了几种不同的理论,包括Fluent方法,但是并没有改变在“ startup.cs”中出现错误的事实。在系统初始化的早期……

有人在这里有想法吗?

0 个答案:

没有答案