Как получить только что добавленные объекты из хранилища? - PullRequest
1 голос
/ 07 февраля 2012

Я использую реализацию репозитория, которая использует общий ObjectContext с другими репозиториями.Хранилище содержит ObjectSet сущностей.Я добавляю новые сущности с помощью метода Add() в ObjectSet.При импорте данных я хотел бы запросить эти новые добавленные объекты, чтобы предотвратить дублирование данных.

ObjectContext реализует шаблон единицы работы.В конце процесса импорта я хотел бы вызвать метод commit, который вызывает context.SaveChange() для сохранения данных.

Однако я не смог найти простой способ запросить недавно добавленные объекты, прежде чем позвонить SaveChanges().Как вы, ребята, справляетесь с такими проблемами?

Ответы [ 2 ]

6 голосов
/ 07 февраля 2012

Запрос ObjectStateManager.

var foo = context.ObjectStateManager
  .GetObjectStateEntries(EntityState.Added)
  .Select(s => s.Entity).OfType<Foo>().SingleOrDefault(f => f.Id == bar);
1 голос
/ 26 сентября 2014

Я использовал ObservableCollection внутри repository.cs , чтобы получить данные перед их сохранением в базе данных, как показано ниже

 public ObservableCollection<T> Local {
    get { return UnitOfWork.GetContext().Set<T>().Local; }
 }

если вы хотите, вы также можете использовать ICollection, потому что это базовый класс для наблюдаемой коллекции.

Теперь вы можете запросить хранилище, как показано ниже ...

 Repository.Local.Where(x=>x.TrackingNumber == order.TrackingNumber).SingleOrDefault();

Но помните, что вы не можете получить данные с помощью идентификаторов перед сохранением в базе данных, поэтому используйте другое уникальное поле для получения данных. Для получения дополнительной информации нажмите на ссылку ниже, где я задавал подобный вопрос

Почему я не могу получить недавно добавленные объекты (еще не сохраненные в базе данных) из хранилища

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