0

我有 3 个实体(Projects/ Products/ Negotiations)。

Negotiations 实体有一个名为的列ReferencedIdTypeIdReferencedId是 Projects 和 Products 表的外键。
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 列作为谈判实体的外键并避免为此使用 2 列。

谢谢。

4

2 回答 2

0

正如您所说-这是一个概念性问题..您误用了外键。不要这样做!

使 Negotiations 抽象,创建 ProductNegotiations 和 ProjectNegotiations 作为 Negotiations 的子类,并在那里定义您的导航属性

于 2012-12-11T13:03:54.670 回答
0

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

您可以使用 Table-per-type 或 table-per-hierarchy 映射的某些变体来执行此操作(这是一篇介绍性文章

于 2012-12-11T13:08:05.757 回答