Возможен ли запрос к новому добавленному объекту в MS Entity Framework - PullRequest
5 голосов
/ 28 ноября 2008

Есть ли способ запросить или просто получить доступ к вновь добавленному объекту (используя метод ObjectContext.AddObject) в Entity Framework? Я имею в виду ситуацию, когда она еще не сохранена в хранилище данных с помощью SaveChanges

Я понимаю, что запросы транслируются в базовый SQL и выполняются в хранилище данных, и у него пока нет этого нового объекта. Но в любом случае мне любопытно - если это официально не поддерживается, возможно, это возможно в теории. Если это не так, как разработчик может справиться с этим? Вручную отслеживать новые объекты и запрашивать их, используя Linq для объектов?

Тот же вопрос относится и к LinqToSql.

Ответы [ 2 ]

7 голосов
/ 29 января 2009

В EF, если вы используете этот код, у вас есть все сущности, которые уже загружены в контексте (включая недавно добавленные):

context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Unchanged).Select(o => o.Entity).OfType<YourObjectType>()
2 голосов
/ 29 января 2009

"Тот же вопрос относится и к LinqToSql."

Для LINQ-to-SQL посмотрите DataContext.GetChangeSet(); 3 отдельных коллекции для ожидающих .Inserts, .Updates и .Deletes

Обратите внимание, что ChangeSet - это моментальный снимок, когда вызывается метод GetChangeSet(); вам нужно повторно запросить, чтобы увидеть любые дополнительные изменения.

...