我正在开发Visual Studio Ultimate 2013中的MVC项目,我的一些表中有一些不需要的列,我真的不明白为什么会这样。
在表Categories
中,列Template_TemplateId
可能是因为Template
实体类中存在ICollection<Category>
属性。
我希望Template
有多个类别,但是很多Templates
可以重复使用一个类别,所以我想Template_TemplateId
列是我不想要的。
有人可以解释一下,为什么会这样,以及以正确的方式建立模型的正确方法是什么?
谢谢。
答案 0 :(得分:1)
模型优先:
默认情况下,EntityFramework会创建一对多类型关系。当你创建它们时,你需要一个外键,一个&#34;一个&#34;关系的一面。
这是&#34; Template_TemplateID&#34;领域。它是进入&#34;模板&#34;的外键。类别。但是,你说你想要一个多对多关系,所以你是绝对正确的;那个领域没用!
您需要指定&#34; *&#34;的基数。在关系的两端,然后模型将创建一个允许多对多关系的中间表。外键应该在这一点上消失。
代码优先:
同样的问题,但解决方案是制作一个&#34;模板&#34;在类别和&#34;类别&#34;的集合在模板中,从而创建多对多关系。
答案 1 :(得分:0)
如果您希望模板和类别之间建立多对多关系,请在每个类上创建两个集合 - 在模板上创建ICollection,在类别上创建ICollection。