Это может быть простое решение, но ....
Если у меня есть репозиторий Entity Framework 4, который предоставляет следующий интерфейс:
void InsertOrUpdate(Foo foo);
И мой EDM сделан с пользовательскими POCO (без генерации кода), как мне выполнить ОБНОВЛЕНИЕ до POCO?
Я могу ВСТАВИТЬ новый объект, выполнив это:
var newFoo = new Foo { ... };
repo.InsertOrUpdate(newFoo);
Это работает, если я реализую этот метод с ObjectContext.AddObject .
Но если я попытаюсь ОБНОВИТЬ объект:
var existingFoo = repo.Find(foo);
existingFoo.Name = "Changed the foo!";
repo.InsertOrUpdate(existingFoo);
Я получаю сообщение об ошибке, в котором говорится, что сущность с таким же ключом уже существует, что имеет смысл, но хотя метод ObjectContext.AddObject был достаточно умен, чтобы выполнить INSERT или UPDATE?
Как мы обрабатываем вставки и обновления в EF4 POCO Repos? Должен ли я сначала сделать запрос к БД, чтобы узнать, есть ли он, если нет, то сделать AddObject, если он есть - что мне делать?