2009-03-16 2 views

ответ

5

Не совсем в этом виде нет.

Вам нужно будет выбрать все объекты, соответствующие вашим критериям, просмотреть их и обновить.

Если вы ищете что-то, что сделает это прямо в БД, потому что ваш набор может быть огромным, вам придется использовать SQL напрямую. (Я не помню, имеет ли EF способ выполнения запросов UPDATE напрямую, как это делает Linq To SQL).

+0

Только то, что я подозревал, я буду использовать sproc – Drevak

+8

Или вы могли бы использовать это: http://weblogs.asp.net/pwelter34/archive/2011/11/29/entity-framework-batch-update- and-future-queries.aspx – MutantNinjaCodeMonkey

+0

@MutantNinjaCodeMonkey Хороший пакет, спасибо за обмен! –

3

Должно быть, это будет немного более ограничено в целом.

var myEntity = context.First(item => item.id == 10); 
myEntity.value += 1; 
context.SaveChanges(); 

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

+2

EF-генерироваться SQL совершенно другая: два SQL заявления, которые не являются атомарными. –

+0

+1 b/c использует ядро ​​EF. –

11

Используйте Пакетное обновление особенность Entity Framework Extended Library, как это:

dbContext.Tests.Update(t => t.Id == 10, t => new Test() { Value = t.Value + 1 }); 
+0

MutantNinjaCodeMonkey упомянул об этой библиотеке в комментарии к другому ответу. Я обнаружил, что библиотека соответствует законопроекту настолько хорошо, что стоит обратить внимание на его собственный отдельный ответ. –

Смежные вопросы