Entity framework 首先在EF6代码中映射可选的一对一
关于一对一映射,我似乎遇到了很多类似的问题,但我还是被这个特殊的情况所困扰 考虑到以下几点:Entity framework 首先在EF6代码中映射可选的一对一,entity-framework,Entity Framework,关于一对一映射,我似乎遇到了很多类似的问题,但我还是被这个特殊的情况所困扰 考虑到以下几点: // model class Parent { public int ParentId { get; set; } // children public virtual ICollection<Child> Children { get; set; }; // active child public int ActiveChildId { get
// model
class Parent
{
public int ParentId { get; set; }
// children
public virtual ICollection<Child> Children { get; set; };
// active child
public int ActiveChildId { get; set; }
public virtual Child ActiveChild { get;set; }
}
class Child
{
public int ChildId { get; set; }
public int ParentId { get; set; }
public virtual Parent Parent { get; set; }
}
首先,您需要将id属性设置为可选:
public int? ActiveChildId { get; set; }
如果您使用默认约定,这将起作用。在您的情况下,使用映射时,HasForeignKey
对于可选关系不可用。您可以通过使用HasMany
方法解决此问题,而无需指定另一端,如下所示:
HasOptional(parent => parent.ActiveChild)
.WithMany()
.HasForeignKey(parent => parent.ActiveChildId)
有关更多背景信息,您可以在此处查看完整的说明:
哦,是的,实际上在我的代码中,ActiveChildId是可选的
int?
。谢谢
HasOptional(parent => parent.ActiveChild)
.WithMany()
.HasForeignKey(parent => parent.ActiveChildId)