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モードで試してみるとうまくいきます。 誰かがバグか、何か不足していると思いますか? ありがとう!