2016-10-06 13 views
0

I持って次のシナリオ:EFコアのSQLite - 外部キーNULL可能な子の挿入(リリース)

public class ObjectA 
{ 
    public ObjectA() 
    { 
     ObjectB = new HashSet<ObjectB>(); 
    } 

    public Guid Id { get; set; } 
    public string SomeFieldA { get; set; } 

    public virtual ICollection<ObjectB> ObjectB { get; set; } 
} 
public class ObjectB 
{ 
    public Guid Id { get; set; } 
    public string SomeFieldB { get; set; } 

    public Guid? IdObjectA { get; set; } 
    public ObjectA ObjectA { get; set; } 
} 

public class DefaultContext : DbContext 
{ 
    public DbSet<ObjectA> ObjectA { get; set; } 
    public DbSet<ObjectB> ObjectB { get; set; } 
    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<ObjectA>() 
      .HasMany(b => b.ObjectB) 
      .WithOne(b => b.ObjectA) 
      .HasForeignKey(b => b.IdObjectA) 
      .OnDelete(Microsoft.EntityFrameworkCore.Metadata.DeleteBehavior.Cascade); 
    } 
} 

public class InsertClass 
{ 
    public void Insert() 
    { 
     ObjectA objA = new ObjectA(); 
     objA.Id = Guid.NewGuid(); 
     objA.ObjectB = new List<ObjectB>(); 
     objA.ObjectB.Add(new ObjectB() { Id = Guid.NewGuid(), SomeFieldB = "SomeValue1" }); 
     objA.ObjectB.Add(new ObjectB() { Id = Guid.NewGuid(), SomeFieldB = "SomeValue2" }); 

     using (DefaultContext context = new DefaultContext()) 
     { 
      context.Add(objA); 
      context.SaveChanges(); 
     } 
    } 
} 

例外:

System.Data.SQLite.SQLiteException:制約が失敗したFOREIGN KEY

EF Coreバージョン1.0.0/1.0.1

注:これはRELEASEモードでのみ発生します。DEBUGモードで試してみるとうまくいきます。 誰かがバグか、何か不足していると思いますか? ありがとう!

答えて

0

ヌルFKに関連する可能性があります。 null可能性のある項目の「デフォルト」(GUID形式の「すべてゼロ」)項目を試してみることを検討しましたか?そして、FKが変更された時期(この場合は同等の論理)を指定する必要があると思われる場合は、エンティティの状態が変更/変更/追加または削除されていることをEFCに示す必要があります。

関連する問題