У нас есть n-уровневое приложение, которое включает в себя БД, поверх нее EF4, затем службы WCF и, наконец, клиент silverlight 4.
Мы думаем, каков наилучший способ обновить одно свойство сущности. У нас есть клиентский объект, который имеет около 15 объектов. Теперь в клиенте пользователь изменил свойство «Имя клиента» и хочет сохранить это изменение в БД. Итак, на ум приходят два метода:
1) Просто отправьте всю сущность Customer через службу WCF и обновите базу данных. Это очень просто, потому что в методе Update на сервере все, что нам нужно сделать, это присоединить входящий объект к контексту, изменить его objectState на измененный и нажать SaveChanges ().
2) Поскольку все наши объекты имеют один ключ int, мы можем предоставить метод в службе WCF, который выглядит примерно так:
public void UpdtaeEntityProperty(Type i_EntityType, int i_EntityId, string i_PropertyName, string i_NewValue);
В первом методе мы отправляем по сети много информации, которая не нужна.
Второй метод отправляет только то, что нужно, плюс он подходит всем энтузиастам. Другое преимущество состоит в том, что когда пользователь обновляет несколько полей в пользовательском интерфейсе, мы имеем больше возможностей для создания исключений, когда он вводит значения.
Во всех примерах EF4 \ videos \ books процесс обновления значения свойства всегда включает в себя отправку полного объекта. Вы никогда не увидите подход, который обновляет одно значение. Это как если бы мы пропустили какое-то связывание данных в клиенте: компонентную сеть, которая будет связывать определенное текстовое поле с БД, даже если это через службу WCF.
1) Разве такое решение находится в разработке для следующих реалий EF4 / WCF?
2) Является ли наше решение метода UpdateEntityProperty хорошей практикой?