据我了解,要添加子行,您可以执行
parent.Children.Add(子);
或
child.Parents = parent
然后你可以做myContext.SaveChanges();
不知何故,第二种解决方案根本不进行插入工作。这是我的代码:
CountMaster countMaster = (from b in pMDataContext.CountMasters
where b.ReportDate == reportDate && b.Department == dept
select b).SingleOrDefault();
CountDetail countDetail = new CountDetail { CategoryId = 1, StatusId = 1 };
//countMaster.CountDetails.Add(countDetail);
countDetail.CountMaster = countMaster;
pMDataContext.SaveChanges();
答案 0 :(得分:4)
将实体添加到集合导航属性或将其设置为已跟踪实体的引用导航属性时,EF会将该实体添加到EntityState.Added
状态的上下文中。这是由于ObjectStateManager
检测到对被跟踪实体所做的更改。
如果您正在以相反的方式工作,即从未跟踪的实体开始并将跟踪的实体设置/添加到引用/集合属性,则ObjectStateManager
无法检测您对未跟踪的更改所做的更改实体。因此,您需要在SaveChanges()
之前将实体显式添加到上下文中。
countDetail.CountMaster = countMaster;
context.CountDetails.Add(countDetail);
pMDataContext.SaveChanges();