实体框架DBcontext添加子行

时间:2013-05-08 22:40:57

标签: entity-framework frameworks entity-framework-4.1 entity

据我了解,要添加子行,您可以执行

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();

1 个答案:

答案 0 :(得分:4)

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

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

countDetail.CountMaster = countMaster;
context.CountDetails.Add(countDetail);
pMDataContext.SaveChanges();