Entity framework 没有共享主键的EF 0..1到0..1关系
我有两个实体,我想配置可选的1-1关系(即0..1到0..1)。我希望只在一个实体上使用一个键,同时在两个方向上都具有导航属性 考虑以下简化示例来说明:Entity framework 没有共享主键的EF 0..1到0..1关系,entity-framework,ef-code-first,Entity Framework,Ef Code First,我有两个实体,我想配置可选的1-1关系(即0..1到0..1)。我希望只在一个实体上使用一个键,同时在两个方向上都具有导航属性 考虑以下简化示例来说明: public class Person { public int PersonId { get; set; } public int? TicketId { get; set; } public virtual Ticket Ticket { get; set; } } public class Ticket {
public class Person
{
public int PersonId { get; set; }
public int? TicketId { get; set; }
public virtual Ticket Ticket { get; set; }
}
public class Ticket
{
public int TicketId { get; set; }
public virtual Person Person { get; set; }
}
有很多人,还有很多票。一个人最多可以拥有一张票。有人没有票,也有无人认领的票
我认为以下方法可能有效:
modelBuilder.Entity<Person>()
.HasOptional(p => p.Ticket)
.WithOptionalPrincipal(t => t.Person);
modelBuilder.Entity()
.has可选(p=>p.Ticket)
.与期权委托人(t=>t.Person);
但这会在Ticket表上创建一个额外的ID
我知道使用两个可选关系可以实现这一点,但这不是一个理想的解决方案,因为它需要两个调用来保存更改,并且不能保证引用完整性(例如,Person1可以拥有Ticket1,但Ticket1可以指向Person2)
类似的问题通常集中在1-0..1关系上,其中主体实体的主键可用于从属关系-这也不合适
我首先使用的是EF6代码。多对多联接表,但联接表上的每个外键列也有自己的唯一索引?EF不能很好地处理这种关联