ef一对一参照完整性约束违规

时间:2014-06-26 09:27:12

标签: entity-framework-6 one-to-one

有三个实体:

class A 
{
   public int Id { get; set; }
   public string Z { get; set; }
   public virtual B Bc { get; set; }
   public virtual C Cc { get; set; }
}

class B
{
   public int Id { get; set; }
   public string X { get; set; }
   public virtual A Ac { get; set; } 
}

class C
{
   public int Id { get; set; }
   public string Y { get; set; }
   public virtual A Ac { get; set; } 
}

我希望' A'课程与' B'一对一连接。上课或' C'但是只有其中一个。 数据库中的表之间已准备好一对一连接。

我尝试使用流畅的映射来建立他们的关系,但是当我想插入A时总是出错:

  

发生了参照完整性约束违规:' A.ID'的属性值。在一段关系的一端与' B.ID'的财产价值不匹配。在另一端。

modelBuilder.Entity<A>()
  .HasOptional(x => x.B)
  .WithRequired();

modelBuilder.Entity<A>()
  .HasOptional(x => x.C)
  .WithRequired();

OR

modelBuilder.Entity<B>() 
  .HasRequired(t => t.A) 
  .WithOptional(t => t.B);

modelBuilder.Entity<C>() 
  .HasRequired(t => t.A) 
  .WithOptional(t => t.C);

请问是什么解决方案?

修改

  1. 我保存A.
  2. B.ID = A.ID
  3. 我保存B.

0 个答案:

没有答案