1

据我了解,要添加子行,您可以这样做

父.子.添加(子);

或者

孩子.父母=父母

然后你可以做 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();
4

1 回答 1

4

将实体添加到集合导航属性或将其设置为已跟踪实体的引用导航属性时,EF 会将该实体添加到EntityState.Added状态中的上下文中。这是由于ObjectStateManager检测到对被跟踪实体所做的更改。

如果您以相反的方式工作,即从未跟踪的实体开始并将跟踪的实体设置/添加到引用/集合属性,则ObjectStateManager无法检测您对该未跟踪的实体所做的更改。因此,您需要在之前显式地将实体添加到上下文中SaveChanges()

countDetail.CountMaster = countMaster;
context.CountDetails.Add(countDetail);
pMDataContext.SaveChanges();
于 2013-05-09T02:19:56.940 回答