为什么新创建的具有导航属性的实体对象会自动添加到ObjectContext?

时间:2010-04-13 08:16:57

标签: entity-framework

我需要实体:公司和位置(一对多)。当我创建新的Location实体对象并使用已存在的Location对象(Location _new = new Location(); _new.Company = _old.Company)的navigation属性分配导航属性(Company)时。似乎在那时新创建的对象被自动添加到Object Context,因为当我调用SaveChanges方法时该对象被插入数据库,尽管我没有调用ObjectContext.AddObject(_new)。我是EF的新手,所以我可能有这样的结果吗?是否还需要分配CompanyReference以及如何阻止此行为?我想明确地自己添加新对象。

  

IDaoFactory daoFactory = new DaoFactory();
ILocationDao locaitonDao = daoFactory.GetLocationDao();
IEnumerable<Location> locations = locaitonDao.GetLocations();
Location _old = locations.First();
Location _new = new Location();
_new.LocationName = _old.LocationName;
_new.Company = _old.Company;// 1
_new.Address = _old.Address;
//...
ContactEntities.SaveChanges();//2

     

如果我立即执行第(1)行_new对象被添加到对象上下文中,我可以在执行第(2)行后在我的数据网格中看到其他数据行。

1 个答案:

答案 0 :(得分:0)

没关系。
“聪明的”实体框架发现您已将一个新对象附加到ObjectStateManager中已有的对象,并将新附加的对象添加到添加状态,因此它将添加到SaveChanges()调用中。