数据库优先 Entity Framework 多重性

Database First Entity Framework multiplicity

我正在处理一个简单的数据库,具体来说是数据库优先方法生成的模型(Visual Studio 2017 社区,Entity Framework 6.2): Generated Database Model

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

我的问题是,当 Entity Framework 基于现有数据库生成 classes 时,一切正常,除了这个特定的 table,其中 EF 建议(我不知道为什么)UserMessage table 对自身的重数为 0..1 - * 而它应该为 1 - 0..1(因为消息可能有直接答案,但不超过 1,尽管消息,即答案,也可能有答案,所以它就像一个链表)。 这是生成的 class:UserMessage generated class

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

感谢您的回答!

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

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

UserMessages1 = MessagesThatReferenceMe

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

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