我正在使用.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()。
有什么想法吗?
答案 0 :(得分:0)
在EF6中,此类关系使用Shared Primary Key Association建模。
首先从HelperCodeId
实体移除Code
成员,因为Code
到HelperCode
不会有FK。相反,HelperCodeId
实体中的HelperCode
将是PK和FK Code
。
然后按如下所示更改Code
实体配置:
HasOptional(c => c.HelperCode)
.WithRequired(hc => hc.Code)
.WillCascadeOnDelete();