entityframework数据库中不需要的列

时间:2014-06-02 21:36:44

标签: c# asp.net asp.net-mvc entity-framework-4

我正在开发Visual Studio Ultimate 2013中的MVC项目,我的一些表中有一些不需要的列,我真的不明白为什么会这样。

在表Categories中,列Template_TemplateId可能是因为Template实体类中存在ICollection<Category>属性。

我希望Template有多个类别,但是很多Templates可以重复使用一个类别,所以我想Template_TemplateId列是我不想要的。

有人可以解释一下,为什么会这样,以及以正确的方式建立模型的正确方法是什么?

谢谢。

2 个答案:

答案 0 :(得分:1)

模型优先:

默认情况下,EntityFramework会创建一对多类型关系。当你创建它们时,你需要一个外键,一个&#34;一个&#34;关系的一面。

这是&#34; Template_TemplateID&#34;领域。它是进入&#34;模板&#34;的外键。类别。但是,你说你想要一个多对多关系,所以你是绝对正确的;那个领域没用!

您需要指定&#34; *&#34;的基数。在关系的两端,然后模型将创建一个允许多对多关系的中间表。外键应该在这一点上消失。

代码优先:

同样的问题,但解决方案是制作一个&#34;模板&#34;在类别和&#34;类别&#34;的集合在模板中,从而创建多对多关系。

答案 1 :(得分:0)

如果您希望模板和类别之间建立多对多关系,请在每个类上创建两个集合 - 在模板上创建ICollection,在类别上创建ICollection。