两个实体之间的可选关系
Optional relationship between two entities
我有 2 个表:
站点:
public class Site
{
public int Id { get; set; }
public virtual PersonDetail Person { get; set; }
}
人物详情:
public class PersonDetail
{
public int Id { get; set; }
public virtual Site PbnSite { get; set; }
}
一个站点不一定有一个人,一个人也不一定有一个站点。因此,这种关系在两端都是可选的。
我收到错误:
Unable to determine the principal end of an association between the
types 'Site' and 'PersonDetail'. The principal end of this association
must be explicitly configured using either the relationship fluent API
or data annotations.
尝试使用此架构更新我的数据库时。
我知道一个解决方案是根据需要设置其中一个,但看到 none 确实是必需的,我自然会假设有一种方法可以创建可选关系。
在一对一关系中,一端必须是主体,第二端必须是从属。在您的 Context class 中重写 OnModelCreating
方法并试试这个:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<PersonDetail>()
.HasOptional(p => p.PbnSite)
.WithOptionalPrincipal(s => s.Person);
}
我有 2 个表:
站点:
public class Site
{
public int Id { get; set; }
public virtual PersonDetail Person { get; set; }
}
人物详情:
public class PersonDetail
{
public int Id { get; set; }
public virtual Site PbnSite { get; set; }
}
一个站点不一定有一个人,一个人也不一定有一个站点。因此,这种关系在两端都是可选的。 我收到错误:
Unable to determine the principal end of an association between the types 'Site' and 'PersonDetail'. The principal end of this association must be explicitly configured using either the relationship fluent API or data annotations.
尝试使用此架构更新我的数据库时。 我知道一个解决方案是根据需要设置其中一个,但看到 none 确实是必需的,我自然会假设有一种方法可以创建可选关系。
在一对一关系中,一端必须是主体,第二端必须是从属。在您的 Context class 中重写 OnModelCreating
方法并试试这个:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<PersonDetail>()
.HasOptional(p => p.PbnSite)
.WithOptionalPrincipal(s => s.Person);
}