Простой вопрос: можно ли получить этот запрос с помощью Entity Framework при обновлении одного объекта?Оператор обновления с Entity Framework
update test set value = value + 1 where id = 10
Простой вопрос: можно ли получить этот запрос с помощью Entity Framework при обновлении одного объекта?Оператор обновления с Entity Framework
update test set value = value + 1 where id = 10
Не совсем в этом виде нет.
Вам нужно будет выбрать все объекты, соответствующие вашим критериям, просмотреть их и обновить.
Если вы ищете что-то, что сделает это прямо в БД, потому что ваш набор может быть огромным, вам придется использовать SQL напрямую. (Я не помню, имеет ли EF способ выполнения запросов UPDATE напрямую, как это делает Linq To SQL).
Должно быть, это будет немного более ограничено в целом.
var myEntity = context.First(item => item.id == 10);
myEntity.value += 1;
context.SaveChanges();
Если произвести подобный SQL, вы можете смотреть профилировщика, чтобы увидеть, что на самом деле генерируется SQL, но это должно быть очень похоже на ваше заявление.
EF-генерироваться SQL совершенно другая: два SQL заявления, которые не являются атомарными. –
+1 b/c использует ядро EF. –
Используйте Пакетное обновление особенность Entity Framework Extended Library, как это:
dbContext.Tests.Update(t => t.Id == 10, t => new Test() { Value = t.Value + 1 });
MutantNinjaCodeMonkey упомянул об этой библиотеке в комментарии к другому ответу. Я обнаружил, что библиотека соответствует законопроекту настолько хорошо, что стоит обратить внимание на его собственный отдельный ответ. –
Только то, что я подозревал, я буду использовать sproc – Drevak
Или вы могли бы использовать это: http://weblogs.asp.net/pwelter34/archive/2011/11/29/entity-framework-batch-update- and-future-queries.aspx – MutantNinjaCodeMonkey
@MutantNinjaCodeMonkey Хороший пакет, спасибо за обмен! –