与E.F. Fluent Api配置零对一关系

时间:2016-07-14 10:16:56

标签: c# entity-framework

我正在使用.Net Framework 4.0和Entity Framework 6.1.3开发一个C#库。

这就是我想要设计的:

我有一个代码可以有一个帮助代码。换句话说,代码可以有零个或一个辅助代码。

而且,我可以拥有与任何代码无关的帮助代码。

这些是POCO课程:

public class HelperCode
{
    public int HelperCodeId { get; set; }

    [ ... ]

    public virtual Code Code { get; set; }
}

public class Code
{
    public int CodeId { get; set; }

    [ ... ]

    public int? HelperCodeId { get; set; }

    public virtual HelperCode HelperCode { get; set; }
}

是的,我知道,我有同样问题的另一个问题。嗯,这不是同一个问题,因为answer不起作用:

class CodeConfiguration : EntityTypeConfiguration<Code>
{
  public CodeConfiguration()
 {

  //other codes      

    HasOptional(c => c.HelperCode)
        .WithRequired(hc => hc.Code).HasForginKey(x=>x.HelperCodeId);
  }
}

因为不需要代码而.WithRequired()没有.ForeignKey()。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在EF6中,此类关系使用Shared Primary Key Association建模。

首先从HelperCodeId实体移除Code成员,因为CodeHelperCode不会有FK。相反,HelperCodeId实体中的HelperCode将是PK和FK Code

然后按如下所示更改Code实体配置:

HasOptional(c => c.HelperCode)
    .WithRequired(hc => hc.Code)
    .WillCascadeOnDelete();