Я надеялся, что есть способ использовать тот же код для вставки и обновления.Entity Framework 4.0 Вставка/обновление
Например, я вставляю новый клиент, как показано ниже, используя структуру сущности.
using (var context = new GenWebEntities())
{
clientObj = new Client();
var client = new Client
{
FirstName = "John",
LastName = "Smith"
};
clientObj = client;
context.SaveChanges();
}
И если бы я мог использовать тот же код для обновления клиента, мне не пришлось бы писать двойной код.
using (var context = new GenWebEntities())
{
clientObj = context.Clients.Single(c => c.ClientId == 31);
var client = new Client
{
FirstName = "Johnathan", // Updated First Name
LastName = "Rock" // Updated Last name
};
clientObj = client;
context.SaveChanges();
}
Если есть один способ кодирования и для вставки и обновления, я хотел бы знать, как, как этот метод выше просто вставляет новую запись.
** ОБНОВЛЕНИЕ ** Проблема, с которой я сталкиваюсь с этим решением, связана с отношением друг к другу.
Пример:
У меня есть другой таблицы ClientPayment, которое один ко многим. Итак, когда мне нужно обновить ClientPayment, как мне ссылаться на эту таблицу для обновления?
Для вставки я бы нормально сделать:
client.ClientPayments.Add(new ClientPayment { Type = "Credit Card", CardNumber = "4111-1111-1111-1111")
Спасибо.
Я не думаю, что существующий код делает то, что вы думаете, что он делает. Если вы хотите добавить новый объект в контекст, используйте 'context.Add (newClient)'. Если вы выберете объект из БД с помощью IQueryable 'context.Clients', вам не нужно создавать новый объект. Вы можете просто изменить свойства 'clientObj' и вызвать' SaveChanges'. Таким образом, единственное различие между «вставкой» (сохранение нового объекта) и обновлением (сохранение измененного объекта) заключается в том, что перед новым нужно выполнять «context.Clients.Add». –