Я использую .net MVC 4 и EF 5. У меня есть модель с Master деталь структуры, как:MVC редактировать комплексная модель ICollection свойство
public partial class Master
{
public int IdMaster { get; set; }
public String MasterName {get; set;}
public virtual ICollection<Detail> details { get; set; }
}
public partial class Detail
{
public int IdDetail { get; set; }
public String DetailName{get; set;}
public virtual Master master { get; set; }
}
Я создал «Создать» вид, где у меня есть вход поля для кода Master и js для добавления рядов деталей. Все, вилы отлично, «Создать» HTTP POST-контроллер связывает все отлично и код:
context.Master.Add(master);
context.SaveChanges();
вставки как в главных и подчиненных таблицах.
Но когда я делаю Редактировать сообщение ... мой отладчик говорит мне, что привязка хорошая, у меня есть некоторые обновления на некоторых деталях строк и некоторые новые строки, например ... , но после заполнения сообщения я получаю только обновления мастер-таблицы, а Detail - то же, что и до редактирования.
В настоящее время я использую обходное решение, делясь всеми деталями и вставляя их в «Редактирование» элемента управления до редактирования мастера, но мне интересно, если есть разрешение, где EF может обнаружить эти изменения и иметь дело с деталями ...
Update 1:
[HttpPost]
public ActionResult Edit(Master master)
{
if (ModelState.IsValid)
{
db.Entry(master).State = EntityState.Modified;
db.SaveChanges();
-- this updates only the Master table
-- but my Collection Master.details which has some new and some updated
-- element properties does not change in database.
-- How can EF do adding, deleting and inserting into Details table based on my Collection?????
}
}
Спасибо за ваше время
привет вы можете показать код whehere вы редактировали детали –
Я просто сделать это: context.Entry (мастер) .State = EntityState.Modified; context.SaveChanges(); – djomla87
Итак, вам нужно сначала прочитать один и тот же объект из контекста и применить обновления к свойству spefici, если вы хотите обновить определенное свойство, которое необходимо обновить, а затем установить состояние, измененное по вашему усмотрению, тогда оно должно работать. –