Вопрос проще понять, если сразу взглянуть на код
static int Reset()
{
using (ApplicationContext db = new ApplicationContext())
{
return db.Database.ExecuteSqlCommand("UPDATE Employees SET StatusCode=0 WHERE StatusCode>0");
}
}
Можно ли средствами EF сформировать запрос на обновление (одним запросом, а не сначала прочитать в память, изменить и вызывать db.SaveChanges()
- считаю это крайне неэффективным), или использовать ExecuteSqlCommand()
в таких случаях - единственное решение?
Посмотрите пакет EntityFramework.Extended
- кажется, он делает именно то что вам нужно.
Но надо отметить, что "пакетные" операции не дружат с кешем контекста - то есть возможен конфликт при сохранении если сначала обновить запись пакетной операцией а потом попытаться сохранить ее же обычным способом. Используйте пакетные операции если знаете что делаете.
Нет, только как вы уже написали, через обычный SQL запрос. Entity Framework на то и Entity, что работает с сущностями. Без получения сущности ничего не получится. Но не забудьте потом обновить ваши данные в программе. Тогда у вас тоже получится 2 запроса.
Вот еще нашел способ для кейсов, когда знаешь id удаляемого объекта
var toDelete = new Destination { DestinationId = 2 };
context.Destinations.Attach(toDelete);
context.Destinations.Remove(toDelete);
context.SaveChanges();
Виртуальный выделенный сервер (VDS) становится отличным выбором
Где найти реализацию госта 3411-2012 для подсчета контрольной суммы файла
ИСПОЛЬЗУЕТСЯ: С#, Windows Forms