实体框架模型第一个外键列

时间:2012-12-11 12:55:54

标签: c# asp.net-mvc entity-framework asp.net-mvc-4 foreign-key-relationship

我有3个实体(Projects / Products / Negotiations
谈判实体有一个名为ReferencedIdTypeId的列,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. 

编辑: 这是我的模特:

My Model

如何使用1列作为Negotiations实体的外键,并避免使用2列。

感谢。

2 个答案:

答案 0 :(得分:0)

正如你所说 - 这是一个概念性的问题......你正在滥用Foreing Key。不要这样做!

使谈判成为抽象,创建ProductNegotiations和ProjectNegotiations作为谈判的子类并在那里定义您的导航预测

答案 1 :(得分:0)

您不能将单个列作为指向两个表的(正式)外键约束。

您可以使用Table-per-type或table-per-hierarchy mapping(here is an introductory article)的某种变体来执行此操作