Entity Framework 4: метод репозитория T Add (T entity) возвращает T: может ли это произойти (без SaveChanges)? - PullRequest
0 голосов
/ 27 октября 2010

Если у вас есть интерфейс для репозитория, который включает

T Add( T entity);

Репозиторий не будет включать в себя Save () или SaveChanges (). Если вы должны были вернуть «сущность» с:

return _dc.Entities.Where( n => n.ID == entity.ID).Single();

Я бы не ожидал, что это попадет в базу данных и автоматически сгенерирует значения идентичности (автоинкремент). Два вопроса:

  1. Какие значения будут в полях для идентификатора, если предполагается, что это поле идентификатора (с автоинкрементом)?
  2. Когда это действительно сохраняет, можем ли мы ожидать, что поля идентификаторов будут автоматически обновляться в возвращаемом объекте?
  3. Есть ли команда, которая будет обновлять ссылки на объекты из базы данных вне хранилища?

При этом используется ASP.NET POCO Generator для Entity Framework 4 с виртуальными свойствами.

1 Ответ

1 голос
/ 27 октября 2010

_dc.Entities.Anything будет всегда попадать в БД.LINQ to Entities всегда попадает в БД.Даже если объект уже находится в контексте.

Чтобы избежать запроса БД , если объект уже находится в контексте, используйте ObjectContext.GetObjectByKey().

Автоувеличение int или long будет 0 перед сохранением.Да, это обновляется при сохранении.Пока объекты привязаны к контексту, они все это увидят.

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