我有3个实体(Projects
/ Products
/ Negotiations
)
谈判实体有一个名为ReferencedId
和TypeId
的列,ReferencedId
是项目和产品表的外键。
TypeId
已定义ReferencedId
属于哪个实体。
但是当我调用context.SaveChanges();
在Negotiation
实体中插入新消息时,会抛出此错误:
Server Error in '/' Application.
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_ProjectNegotiation". The conflict occurred in database "MyMVCApp", table "dbo.Projects", column 'Id'.
The statement has been terminated.
编辑: 这是我的模特:
如何使用1列作为Negotiations实体的外键,并避免使用2列。
感谢。
答案 0 :(得分:0)
正如你所说 - 这是一个概念性的问题......你正在滥用Foreing Key。不要这样做!
使谈判成为抽象,创建ProductNegotiations和ProjectNegotiations作为谈判的子类并在那里定义您的导航预测
答案 1 :(得分:0)
您不能将单个列作为指向两个表的(正式)外键约束。
您可以使用Table-per-type或table-per-hierarchy mapping(here is an introductory article)的某种变体来执行此操作