1
我使用MVC.net,我有2類(案件和事故)與多對多的關係,我也使用自動映射器複製視圖模型到EF,反之亦然。現在我遇到的問題是當我這樣做:MVC.net EF保存Automapper查看模型不更新鏈接對象
Case theCase = Mapper.Map<CaseEditVM, Case>(theCaseEditVM);
theCase.Accidents.Clear();
UOW.Cases.Update(theCase);
保存事件的變化,但事故的鏈接表不是。如果完全忽略事故更改。
但是當我這樣做:
Case theCase = UOW.Cases.GetByID(someid).Include("Accidents");
theCase.accidents.Clear();
UOW.Cases.Update(theCase);
EF正確保存事故性質。
因此,從我可以告訴EF忽略事故屬性,因爲它沒有映射內部EF呢。但是,如何在繪製View模型時告訴它我想讓EF更新鏈接屬性?
我試過dbSet.Attach(entityToUpdate); entityToUpdate.Accidents.Clear(); context.Entry(entityToUpdate).State = EntityState.Modified;但它不會清除列表。我可以使它工作的唯一方法是使用「包含」加載案例,然後進行更改。然而,EF引發這個異常「ObjectStateManager中已存在一個具有相同鍵的對象」,如果我加載該案例,然後自動將新的值映射到它。 – Jammy
我正在使用的Scratch Case theCase = UOW.Cases.GetByID(theCaseEditVM.ID); theCase = Mapper.Map(theCaseEditVM);這給了錯誤,但只是注意到,如果我這樣Case theCase = UOW.Cases.GetByID(theCaseEditVM.ID); Mapper.Map (theCaseEditVM,theCase); EF很高興並且複製了這些更改。哇噢。 TNX –
Jammy