我有这些模型
public class WarehouseAllocation
{
public int Id { get; set; }
public Warehouse Warehouse { get; set; }
public IList<Dispatch> Dispatches { get; set; }
//---- removed other properties for brevity
}
public class Dispatch
{
public int Id { get; set; }
public IList<DispatchDetail> DispatchDetails { get; set; }
//---- removed other properties for brevity
}
在数据库上,
Dispatch 有一个引用 WarehouseAllocation 表的外键 WarehouseAllocationId。
我使用 Fluent API 将模型映射到数据库,如下所示:
modelBuilder.Entity<WarehouseAllocation>(m =>
{
m.ToTable("WarehouseAllocation");
m.Property(wa => wa.Id).HasColumnName("WarehouseAllocationId")
.ValueGeneratedOnAdd();
m.HasKey(wa => wa.Id);
m.HasOne(wa => wa.Warehouse)
.WithMany()
.HasForeignKey("WarehouseId");
m.HasMany(w => w.Dispatches)
.WithOne();
});
modelBuilder.Entity<Dispatch>(m =>
{
m.ToTable("Dispatch");
m.Property(wa => wa.Id).HasColumnName("DispatchId")
.ValueGeneratedOnAdd();
m.HasKey(wa => wa.Id);
});
当我调用 时 dbContext.WarehouseAllocations
.Include(w => w.Dispatches)
.ThenInclude(w => w.DispatchDetails).ToList(),Ef 核心检索所有仓库分配及其调度,包括详细信息。
问题是当我使用这种方法时:
var warehouseAllocation = dbContext.WarehouseAllocations
.Include(w => w.Dispatches)
.ThenInclude(d => d.DispatchDetails)
.SingleOrDefault(w => w.Id == warehouseAllocationId);
warehouseAllocation.Dispatches.Add(new Dispatch
{
//--including other properties
DispatchDetails = new List<DispatchDetail> {
new DispatchDetail
{
//--other properties
}
}
});
// call another query that includes WarehouseAllocation
dbContext.ChangeTracker.HasChanges() // this is false
dbContext.SaveChanges() // this keeps returning zero
为什么没有检测到变化?
慕容708150
相关分类