[英]EF Core SQLite - Foreign Key nullable child insert (release)
我有以下情况:
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
注意:这仅在“释放”模式下发生,当您在“调试”模式下尝试时,它可以正常工作。 有人知道这是一个错误,还是我错过了什么? 谢谢!
我觉得这可能与空FK有关。 您是否考虑过尝试为nullable设置一个“默认”(即GUID格式的全零)条目。 而且我相信您可能需要指定FK的更改时间(在这种情况下为可比较的逻辑),然后您需要向EFC指示实体的状态为未更改/已修改/已添加或已删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.