【发布时间】:2013-12-20 13:44:29
【问题描述】:
我首先使用的是 EF 6 代码。我在数据库设计中有以下情况:
我有 3 张桌子,即
- 学生
- 人
- 联系方式
通过代码优先的 Fluent API,我在以下各项之间建立了单向的 1 对 1 映射:
- 学生 - 联系方式
- 人员 - 联系人
当我建立 Student - Contact 之间的关系时,一切正常。但是当我添加下一个关系,即 Person - Contact 之间的关系时,我得到了以下异常:
操作失败,因为表“dbo.Contacts”上已存在名为“IX_Id”的索引或统计信息。
现在我知道,由于共享主键概念,Contact 的主键是 Student 的 FK,然后当我添加新关系时,即 之间Person - Contact 强制 EF 为 Person 创建新的 FK,因为同名的 FK 已经存在导致异常。
我想知道这种情况有什么解决方法吗??
我必须将 contact 表分开,因为我的数据库中的许多其他表(如 Student、Person、Firm 等)都将联系信息存储在联系表中。所以我还必须与联系人建立很多其他的一对一关系。
【问题讨论】:
-
你能发布架构定义吗?
标签: c# sql database entity-framework code-first