Допустим, я запрашиваю базу данных и загружаю список элементов. Затем я открываю один из элементов в форме подробного представления и вместо повторного запроса элемента из базы данных создаю экземпляр элемента из источника данных в списке.
Есть ли способ, которым я могу обновить запись базы данных, не выбирая запись отдельного элемента?
Вот пример того, как я делаю это сейчас:
dataItem itemToUpdate = (from t in dataEntity.items
where t.id == id
select t).FirstOrDefault();
Затем после извлечения записи я обновляю некоторые значения в элементе и возвращаю запись обратно:
itemToUpdate.itemstatus = newStatus;
dataEntity.SaveChanges();
Я думаю, что есть лучший способ сделать это, есть идеи?
Вы также можете использовать прямой SQL для базы данных, используя контекст хранилища данных. Пример:
dataEntity.ExecuteStoreCommand
("UPDATE items SET itemstatus = 'some status' WHERE id = 123 ");
По соображениям производительности вы можете передавать переменные вместо одной жестко закодированной строки SQL. Это позволит SQL Server кэшировать запрос и повторно использовать его с параметрами. Пример:
dataEntity.ExecuteStoreCommand
("UPDATE items SET itemstatus = 'some status' WHERE id = {0}", new object[] { 123 });
ОБНОВЛЕНИЕ - для EF 6.0
dataEntity.Database.ExecuteSqlCommand
("UPDATE items SET itemstatus = 'some status' WHERE id = {0}", new object[] { 123 });