Это может быть простое решение, но....
Если у меня есть репозиторий 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? Должен ли я сначала сделать запрос к БД, чтобы увидеть, есть ли он там, если его нет, то сделать AddObject, если да - что мне делать?