数据库优先方法中与联结表的多对多关系

Posted

技术标签:

【中文标题】数据库优先方法中与联结表的多对多关系【英文标题】:Many to Many relation with junction table in Database first approach 【发布时间】:2012-06-26 01:07:33 【问题描述】:

我有三个表 Author、Book 和 AuthorBook。 AuthorBook 表只包含两个指向 Author 和 Book 表的外键,以实现 Author 和 Book 表之间的多对多关系。

当我从数据库生成模型时,Author 和 Book 模型是在没有任何关联的情况下创建的。我在 Author 模型下期待“Books”,在 Book 模型下期待“Authors”。我在这里遗漏了什么或者这就是它的工作方式吗? 这是我的表格图

这是我的模型图

【问题讨论】:

【参考方案1】:

实体框架未包含表 BookAuthor,因为它没有主键。我通过在表上定义主键(在 authorid 和 bookid 上)解决了这个问题。

【讨论】:

【参考方案2】:

您的数据库中的关系是否在 Book BookAuthor 和 Author BookAuthor 之间定义? --> How do I create a foreign key in SQL Server?

【讨论】:

请看上图。 是的,你写的 EF 是从数据库生成的,这 3 个表之间没有关联。发生这种情况的原因:没有定义关联@Database!如果您再次部署项目/解决方案,您应该能够访问“Book.Author”或“Author.Book”

以上是关于数据库优先方法中与联结表的多对多关系的主要内容,如果未能解决你的问题,请参考以下文章

如何在实体关系图中表示联结表?

多个多对多关系(循环关系)

这是在fuelphp中与额外字段创建多对多关系的正确方法吗

Hibernate学习笔记 --- 创建基于中间关联表的多对多映射关系

联结表将包含单个表的外键或主键

通过联结表进行多对多自连接