EF:我如何在没有数据库参照完整性的情况下以1:1建模?

时间:2011-11-10 08:27:02

标签: c# entity-framework

考虑以下表格:

Base, Primary key: Id
Extension, Primary key: Id

“Extension”表中的主键与“Base”表中的主键具有相同的值。我想在edmx中对此进行建模:

Base可以有0..1(零个或一个)扩展实例。

扩展可以有1个(一个)Base实例。使用Extension.Base访问Base实例。

当我尝试指定此关联的映射详细信息时,出现如下错误:

  

“错误3021:从第xx行开始映射片段时出现问题:每个   表Base中的以下列映射到多个概念   side属性:Base.ID映射到“

如何建模不受数据库关系支持的1:0..1关系?我基本上想要一个关系,所以我可以使用Linq查询我的阅读模型。

2 个答案:

答案 0 :(得分:1)

如果我正在读你的话,那么你做的事情类似于一个问题,我必须在一个消息系统中解决太长时间。

基本上,我创建了一个中间表,其中有2列,两个整数,1个来自一个表的id,另一个来自另一个表的id,然后允许我将两者连接在一起。

所以EG:

--------------------------
| Base ID | Extension ID |
--------------------------

我确实必须手动管理表格,所以需要额外的工作,但它确实可以解决问题。

也许不是您需要的确切模式,但我认为中间表无论您的方案是什么都是明智的方式来满足您的需求。

答案 1 :(得分:0)

您应该修改模式类,如下面的1:1关系: -

基类

public class Base
{
    public int BaseID;
    public int ExtentionID;
    public virtual Extention Extension { get; set; }
}

扩展类

public class Extention
{
    public int ExtentionID;
    public int BaseID;
    public Base Base { get; set; }
}