0

我正在研究一个简单的数据库,这里具体来说是由数据库优先方法生成的模型(Visual Studio 2017 社区,实体框架 6.2): 生成的数据库模型

我希望 UserMessage 表能够使用名为 AnswerId 的字段指向自身,这是一个可以为空的外键引用其主键。同样,具体来说,这里是我创建表的部分: UserMessage 表脚本

我的问题是,当实体框架基于现有数据库生成类时,一切都很好,除了这个特定的表,其中 EF 建议(我不知道为什么)UserMessage 表的多重性为 0..1 - *给自己,而它应该是 1 - 0..1(因为一条消息可能有一个直接的答案,但不超过 1,尽管作为答案的那个消息也可能有一个答案,所以它就像一个链表) . 这是生成的类:UserMessage 生成的类

总结一下整个事情:我想知道为什么 Entity Framework 会以它的方式生成我的类,以及如何让它生成它,以便我只有一个指向答案的虚拟属性(如果它有一个),但不是集合。

谢谢您的回答!

4

2 回答 2

1

我认为您所看到的是 EntityFramework 的正确解释。UserMessage1 表示所有 UserMessages 的集合,这些 UserMessages 具有对父级的引用作为其答案。我知道您可能不会将该系列用于任何用途,但它的存在并没有错。UserMessage2 似乎是您正在寻找的属性。也许您可以重命名图中的这些属性,以免造成混淆。

UserMessages1 = MessagesThatReferenceMe

UserMessages2 = 我可能会或可能不会引用的消息

我看不出如何阻止 EF 生成此集合。我认为如果您删除图表中的属性,则每次更新图表时都必须删除它。

于 2018-03-01T22:28:45.053 回答
0

也许尝试删除模型中的第二个 UserMessage 导航属性。

于 2018-03-01T21:56:24.547 回答