Рассмотрим приложение, касающееся домов и картин.Субъект с именем 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 при обновлении / добавлении / удалении?