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

Entity framework 为什么新创建的具有导航属性的实体对象会自动添加到ObjectContext?,entity-framework,Entity Framework,我必须选择实体:公司和地点(一对多)。当我创建新位置实体对象并使用已有位置对象的导航属性分配导航属性(公司)(Location\u new=new Location();\u new.Company=\u old.Company)时。此时,新创建的对象似乎自动添加到对象上下文中,因为当我调用SaveChanges方法时,该对象被插入到数据库中,尽管我没有调用ObjectContext.AddObject(_new)。我是EF的新手,所以我有可能得到这样的结果?是否也需要分配CompanyRefe

我必须选择实体:公司和地点(一对多)。当我创建新位置实体对象并使用已有位置对象的导航属性分配导航属性(公司)(
Location\u new=new Location();\u new.Company=\u old.Company
)时。此时,新创建的对象似乎自动添加到对象上下文中,因为当我调用SaveChanges方法时,该对象被插入到数据库中,尽管我没有调用ObjectContext.AddObject(_new)。我是EF的新手,所以我有可能得到这样的结果?是否也需要分配CompanyReference文件,以及如何执行以阻止此行为?我希望自己明确地添加新对象


IDaoFactory=新的daoFactory()
ILocationDao locaitonDao=daoFactory.GetLocationDao()
IEnumerable locations=locaitonDao.GetLocations()
Location _old=locations.First()
位置_new=新位置()
_new.LocationName=\u old.LocationName
_新公司=_旧公司;//1
_new.Address=_old.Address
//…
ContactEntities.SaveChanges()//2

如果我立即执行第(1)行,新对象将添加到对象上下文中,并且在执行第(2)行后,我可以在数据网格中看到额外的数据行

没关系

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

但如前所述,我不希望这样。我向名为RelatedCompany的Locaiton实体添加了新属性,以保留对特定公司的引用,直到我决定在将该属性分配给导航属性时保存该对象。这很有效,但我不知道这有多好?