Изменить поле с Entity Framework без EntityObject - PullRequest
1 голос
/ 23 марта 2011

У меня есть таблица, которая представляет собой таблицу изображений и других типов файлов.Я хочу изменить поле имени.Обычно я сделал бы это:

var file = Db.Files.First(f => f.FileID == id);
file.Name = "NewName";
Db.SaveChanges();

Однако в этом случае это будет без всякой причины извлекать весь varbinary (max) с сервера базы данных.Есть ли способ отредактировать элемент без получения всего EntityObject?Может быть, я могу использовать объекты-заглушки или что-то?

Ответы [ 2 ]

3 голосов
/ 23 марта 2011

Вы также можете использовать этот простой трюк:

// Define a dummy object
var file = new File { Id = id, Name = "NewName" }; 
// The dummy object attached as Unchanged entity 
context.Files.Attach(file);  
// Get change tracking information about the entity
ObjectStateEntry entry = context.ObjectStateManager.GetObjectStateEntry(file);
// Set Name property to modified
entry.SetModifiedProperty("Name");
// Save changes - only Name property will be modified
context.SaveChanges();

Это сохранит ваш запрос к базе данных.

1 голос
/ 23 марта 2011

Вы можете разделить сущность на две сущности и переместить дорогие столбцы данных во вторую сущность. Отметьте «Разделение таблицы»: отображение нескольких типов объектов в одну таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...