Обновить оператор с Entity Framework - PullRequest
7 голосов
/ 16 марта 2009

Простой вопрос, возможно ли выполнить этот запрос с помощью Entity Framework при обновлении одного объекта?

update test set value = value + 1 where id = 10

Ответы [ 3 ]

11 голосов
/ 17 декабря 2013

Используйте функцию пакетного обновления Расширенная библиотека Entity Framework , например:

dbContext.Tests.Update(t => t.Id == 10, t => new Test() { Value = t.Value + 1 });
5 голосов
/ 16 марта 2009

Не совсем под этой формой нет.

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

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

3 голосов
/ 16 марта 2009

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

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

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

...