Инструкция Update с Entity Framework

простой вопрос, Можно ли достичь этого запроса с помощью Entity Framework при обновлении одной сущности?

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

3 ответов


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

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

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


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

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

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

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

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