实体框架中缺少Crosstable?

时间:2013-03-17 17:31:38

标签: sql sql-server asp.net-mvc entity-framework

我有3个表:帖子,标签和帖子标签。 PostTags表是帖子和标签之间的交叉表,用于解释绑定到帖子的标签(此关系在MS SQL数据库中设置)。

问题是在从数据库更新模型的添加标签中看不到PostTag?添加帖子和标签表时没有添加?如果我切换到刷新选项卡,我会看到PostTags表吗?

模型浏览器中没有PostTag表> MainModel>实体类型?

我可以看到直接从代码中的帖子创建了一个引用,但在尝试时:Posts.Tags.Add它将需要一个Tags实体而不是一个PostTags实体?如果我仍然运行它,它会抱怨标签中的列不能设置为null。我不想向Tags表添加任何内容,只能添加到PostTags表中?

我做错了什么?

1 个答案:

答案 0 :(得分:0)

这是正常的功能。

如果您有一个表(PostTags),它是两个其他表之间的链接,那么它将在模型中显示为帖子和标签之间的多对多关系。

如果要查看连接表,请在PostTags表中添加一个额外字段。

如果您打开模型并查看xml源,您可以看到它是如何工作的。

修改

如果您有这样的一行:

myPost.AddTag(myTag);

这会连接帖子和标签。当您调用SaveChanges时,EF将在PostTags表中添加一个条目。