1
我的問題與this one直接相關。更改實體框架中關係的狀態
accepted answer說「你也必須改變關係的狀態」。
我使用模型優先的方法,並且我沒有在我的實體中的外鍵。我只有導航屬性。
我可以通過DbEntityEntry
更改實體的狀態,但我無法計算如何更改關係本身的狀態。我怎樣才能訪問它?
爲例我的代碼:
Building building = new Building() { Id = 1, Name = "modified" }; //Buiding 1 exists in DB
building.Adress = new Adress() { Id = 1, Road = "Sesame street" }; //Address 1 exists in DB
building.Adress.State = new State() { Id = 1 }; //State with Id 1 exists in DB
dbContext.Entry<Building>(building).State = EntityState.Modified;
dbContext.Entry<Adress>(building.Adress).State = EntityState.Modified;
//The state itself is not modified, but the relation between adress and state may do.
dbContext.Entry<State>(building.Adress.State).State = EntityState.Unchanged;
dbContext.SaveChanges();
這段代碼通沒有錯誤,但Adress
和State
之間的關係永遠不會更新。 建築物的Name
和Street
屬性。