Почему вновь созданный объект сущности со свойством навигации автоматически добавляется в ObjectContext? - PullRequest
0 голосов
/ 13 апреля 2010

У меня есть лица: Компания и Местоположение (один ко многим). Когда я создаю новый объект сущности Location и назначаю свойство навигации (Company) со свойством навигации уже существующего объекта Location (Location _new = new Location(); _new.Company = _old.Company). Кажется, что в этот момент вновь созданный объект автоматически добавляется в контекст объекта, потому что когда я вызываю метод SaveChanges, этот объект вставляется в базу данных, хотя я не вызывал ObjectContext.AddObject (_new). Я новичок в EF, так что, возможно, есть причина, почему у меня такой результат? Нужно ли присваивать также поданную CompanyReference и как это сделать, чтобы заблокировать это поведение? Я хочу явно добавить новый объект сам.

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

Если я выполняю строку (1) мгновенно, _new объект добавляется в контекст объекта, и я вижу дополнительные данные в моей таблице данных после выполнения строки (2).

1 Ответ

0 голосов
/ 14 апреля 2010

Всё в порядке.
«Умный» Entity Framework обнаруживает, что вы прикрепили новый объект к объекту, уже доступному в ObjectStateManager, и добавляет к нему вновь присоединенный объект с состоянием «Добавлено», поэтому он добавляется в вызов SaveChanges ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...