数据库第一实体框架多重性

时间:2018-03-01 21:28:34

标签: c# sql entity-framework ef-database-first multiplicity

我正在开发一个简单的数据库,具体来说,这是由数据库第一种方法生成的模型(Visual Studio 2017社区,实体框架6.2): Generated Database Model

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

我的问题是,当Entity Framework基于现有数据库生成类时,除了这个特定的表之外,一切都很顺利,其中EF建议(我不知道为什么)UserMessage表的多重性为0。 1 - *到它本身虽然应该1 - 0..1(因为一条消息可能有一个直接的答案,但不超过1,虽然这个消息,这是答案,也可能有答案,所以它就像一个链表)。 以下是生成的类:UserMessage generated class

总结一下:我想知道为什么Entity Framework以它的方式生成我的类,我怎么能让它生成它以便我只有一个指向答案的虚拟属性(以防万一)它有一个),但不是一个集合。

感谢您的回答!

2 个答案:

答案 0 :(得分:1)

我认为你所看到的是EntityFramework的正确解释。 UserMessage1表示所有UserMessages的集合,这些UserMessages引用父项作为其答案。我知道你可能不会将这个系列用于任何东西,但它并没有错。 UserMessage2似乎是您正在寻找的属性。也许您可以在图表中重命名这些属性,这样他们就不会混淆。

UserMessages1 = MessagesThatReferenceMe

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

我不知道如何阻止EF生成此集合。我想如果你删除图中的属性,每次更新图时都必须删除它。

答案 1 :(得分:0)

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