Я пытаюсь создать метод в репозитории POCO EF 4 с именем AddOrUpdate.
Идея состоит в том, что бизнес-уровень может передать объект POCO, а среда хранения добавит объект, если онnew (еще не в базе данных), иначе обновит базу данных (после вызова SaveChanges ()) с новым значением.Это похоже на некоторые другие вопросы, которые я задавал об EF, но я только на 80% понимаю это, поэтому прошу прощения за частичное дублирование.
Часть, которую мне не хватает, это как обновить граф объектовв моем ObjectContext / ассоциированном ObjectSet для переданного бизнес-объекта, как только я определил, что бизнес-объект действительно уже существует в базе данных (и теперь был загружен благодаря TryGetObjectByKey).ApplyCurrentValues звучит примерно так, как я хочу, но он только копирует скалярные значения и не предназначен для обновления графа объектов в ObjectContext / ObjectSet.Из-за моего конкретного случая использования мне сейчас нет дела до параллелизма.
public void AddOrUpdate(BO biz)
{
object obj;
EntityKey ek = Ctx.CreateEntityKey(mySetName, biz);
bool found = Ctx.TryGetObjectByKey(ek, out obj);
if (found)
{
// How do I do what this method name implies? Biz is a parent with children.
mySet.TellTheSetToUpdateThisObject(biz);
}
else
{
mySet.AddObject(biz);
}
Ctx.DetectChanges();
}