我从实体框架中获得了一些意想不到的行为,我想验证我的期望是否错误,或者我是否应该怀疑系统是否以错误方式配置。
有一个实体 Master ,其中一个字段是 Minion 类型的列表。在DB中,它们对应于两个通过主键相互关联的表。
在程序中,我从数据库中获取一个预先存在的主服务器,并为其添加一个新的服务器。由于我当时不在上下文之内,所以我创建了一个并添加了主人,即添加了仆从。
using (ModelContext context = new ModelContext())
{
context.Masters.AddOrUpdate(master);
foreach (Minion minion in master.Minions)
context.DirectDebitStatus.AddOrUpdate(minion);
int count = context.ChangeTracker.Entries()
.Where(x => x.State == EntityState.Added || x.State == EntityState.Modified)
.Count();
context.SaveChanges();
}
我希望foreach循环不必要,因为 Minion 的添加实例应该被Entity Framework识别并相应地添加到数据库中。然而,事实并非如此,我不确定为什么。我怀疑还有其他问题,但在我开始花费大量时间追逐问题之前,我想确保它不是追逐怪物而是追逐虫子。