Запрос на включение ожидающих вставок - PullRequest
3 голосов
/ 16 февраля 2012

Как я могу написать запрос, который будет включать ожидающие вставки, а также записи в базе данных? Я использую EF 4.3 Code First.

Ex.

Foo = new Foo { Bar = 5 };
dbContext.Set<Foo>.Add(foo);

IEnumerable<Foo> foos = dbContext.Set<Foo>.Where(f => f.Bar == 5).ToList();

ActOnFoos(foos);

dbContext.SaveChanges();

Я хочу, чтобы foos включил как записи в базу данных, так и записи, ожидающие вставки. Я получаю только те значения, которые есть в базе данных.

В моем собственном коде у меня будет несколько Foos, которые вставляются / обновляются, прежде чем я выполню свой запрос.

Редактировать

Я ищу что-то похожее на Find. Find сначала проверит контекст, затем перейдет в базу данных, если ничего не найдено. Я хочу объединить результаты из контекста и базы данных.

Ответы [ 2 ]

3 голосов
/ 17 февраля 2012

Попробуйте:

DbSet<Foo> set = dbContext.Set<Foo>();

Foo = new Foo { Bar = 5 };
set.Add(foo);

IEnumerable<Foo> foos = set.Local
                           .Where(f => f.Bar == 5)
                           .Union(set.Where(f => f.Bar == 5)
                                     .AsEnumerable());
ActOnFoos(foos);

dbContext.SaveChanges();

Или лучший вариант с изменением порядка операций:

DbSet<Foo> set = dbContext.Set<Foo>();

var data = set.Where(f => f.Bar == 5).AsEnumerable());

Foo = new Foo { Bar = 5 };
set.Add(foo);

IEnumerable<Foo> foos = set.Local.Where(f => f.Bar == 5);

ActOnFoos(foos);

dbContext.SaveChanges();
1 голос
/ 16 февраля 2012

Я думаю, что было бы лучше на самом деле вставить записи в транзакцию и выполнить откат, если вы решите, что не хотите их вставлять.

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