C# 1对1共享主键关系的问题
我首先使用的是EF6代码。我在数据库设计中遇到以下情况: 我有三张桌子 大学生 人 联系 通过code first Fluent API,我在以下各项之间建立了单向1:1映射: 学生联络 个人接触 当我与学生建立联系时,一切都很顺利。但当我添加下一个关系,即人际关系时,我得到了以下例外: 操作失败,因为表“dbo.Contacts”上已存在名为“IX_Id”的索引或统计信息 现在我知道,由于共享主键概念,联系人的主键是Student的FK,因此当我添加新关系时,即Person-Contact之间,强制EF为Person创建新的FK,并且因为同名的FK已经存在,这导致了异常 我想知道在这种情况下有没有解决办法C# 1对1共享主键关系的问题,c#,sql,database,entity-framework,code-first,C#,Sql,Database,Entity Framework,Code First,我首先使用的是EF6代码。我在数据库设计中遇到以下情况: 我有三张桌子 大学生 人 联系 通过code first Fluent API,我在以下各项之间建立了单向1:1映射: 学生联络 个人接触 当我与学生建立联系时,一切都很顺利。但当我添加下一个关系,即人际关系时,我得到了以下例外: 操作失败,因为表“dbo.Contacts”上已存在名为“IX_Id”的索引或统计信息 现在我知道,由于共享主键概念,联系人的主键是Student的FK,因此当我添加新关系时,即Person-Contact之间
我必须将联系人表分开,因为我数据库中的许多其他表,如学生、个人、公司等,都有联系人表中存储的联系人信息。因此,我还必须与联系人建立许多其他1对1的关系 在不了解实体框架或代码的情况下,我认为问题在于您的表需要如下所示:
Contact:
contact_id primary_key
Person:
person_id primary_key
contact_id foreign_key
Student:
student_id primary_key
contact_id foreign_key
Contact:
contact_id primary_key
person_student_id foreign_key -- either to Person or Student
Person:
person_id primary_key
contact_id foreign_key
Student:
student_id primary_key
contact_id foreign_key
根据错误消息,您似乎正在尝试执行以下操作:
Contact:
contact_id primary_key
Person:
person_id primary_key
contact_id foreign_key
Student:
student_id primary_key
contact_id foreign_key
Contact:
contact_id primary_key
person_student_id foreign_key -- either to Person or Student
Person:
person_id primary_key
contact_id foreign_key
Student:
student_id primary_key
contact_id foreign_key
你能发布模式定义吗?也许有帮助。