. Моя веб-служба .net считывает сущность из БД и отправляет ее в клиентское приложение.Как обновить весь объект без указания каждого из его членов?
Клиентское приложение изменяет некоторые поля в сущности и затем отправляет объект обратно на сервер, который будет обновляться в БД.
безошибочный, но трудоемкий способ сделать это идет что-то вроде:
public void Update(MyEntity updatedEntity)
{
using (var context = new MyDataContext())
{
var existingEntity = context .MyEntities.Single(e => e.Id == updatedEntity.Id);
existingEntity.FirstName = updatedEntity.Name;
existingEntity.MiddleName = updatedEntity.MiddleName;
existingEntity.LastName = updatedEntity.LastName;
// Rinse, repeat for all members of MyEntity...
context.SubmitChanges();
}
}
Я не хочу идти по этому пути, потому что это заставляет меня указать каждую собственность члена в MyEntity
. Это, вероятно, будет нарушено при изменении структуры MyEntity
.
Как я могу принять входящий updatedEntity
и представить его для LINQ to SQL целиком для обновления?
Я пробовал достичь этого с помощью метода Attach()
и вошел в мир боли.
Действительно ли это Attach()
правильный путь? Может ли кто-нибудь указать на рабочий пример того, как это сделать?
'Attach()' является одним из способов сделать это. Но я обычно создаю Mapper для этих ситуаций. [Automapper] (http://automapper.org/) делают самые простые случаи из коробки. –
Если у вас есть проблемы с 'Attach', каковы они? –
Моя текущая проблема с 'Attach()' заключается в том, что если клиент устанавливает свойство rowversion объекта null, то context.SubmitChanges() выдает исключение, говорящее, что «строка не найдена или не изменена». – urig