我的问题与这个直接相关。
接受的答案是“您还必须更改关系的状态”。
我使用模型优先方法,并且我的实体中没有外键。我只有导航属性。
我可以通过 更改实体的状态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
物业的情况确实如此。