Entity Framework: обновление отношений «один-много» для дочерней коллекции объекта - PullRequest
3 голосов
/ 21 июня 2010

Рассмотрим приложение, касающееся домов и картин.Субъект с именем House имеет отношение 1: n к HousePicture.

Приложение позволяет пользователю создавать и редактировать House, а также добавлять / удалять HousePictures.

[HttpPost]
public ActionMethod Edit(House h)
{
   //get an attached entity from the DB first.
   House original = db.Houses.SingleOrDefault(x=>x.ID==h.ID);

   UpdateModel(original);

   //collect all the uploaded pictures.
   original.HousePictures = GatherPicturesFromForm();


   db.SaveChanges();
   // the changes for the House are saved, 
   //but child collection Pictures are not.
}

Как вы собираетесь обновлять - добавлять новые и удалять - дочернюю коллекцию при воссоздании дочерней коллекции с нуля?

  • Add() или Attach() длякаждый дочерний элемент в коллекции?
  • В какой последовательности вам нужно добавить или присоединить родительскую сущность к дочерней коллекции?
  • Как найти детей, которых необходимо удалить?Является ли это функцией EF4, где удаление происходит автоматически с помощью инфраструктуры, или разработчик должен написать эту логику?
  • При добавлении более одного HousePicture его ID == 0. Объектимеет первичный ключ в SQL Server имеет автоматически назначенный PK int IDENTITY(1,1).Это становится проблемой, потому что EF4 считает, что 2+ ребенка имеют одинаковый идентификатор.

  • Каковы ваши рекомендации по сохранению дочерних коллекций с использованием Entity Framework 4?

  • Любые другие предложения по упрощению сохранения коллекций 1: n при обновлении / добавлении / удалении?

1 Ответ

0 голосов
/ 21 июня 2010

В EF просто добавьте новые объекты в коллекцию, и они будут автоматически сохранены в базе данных с правильными значениями внешнего ключа.

original.HousePictures.AddRange (GatherPicturesFromForm ());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...