当 breeze child 实体更新时 parent 实体状态没有改变

when breeze child entity update parent entity state is not change

淘汰赛

当我Add/Updatechild实体时,parent实体状态没有改变。

我的以下场景是使用 breeze

的客户端更改跟踪
public class Student
{
    public int StudentId { get; set; }
    public string Name { get; set; }
    public Department Department { get; set; }
}

public class Department
{
    public int DepartmentId { get; set; }
    public string DepartmentName { get; set; }
}

当我更新 'Student' 的 'Department' 时,学生实体状态保持 'Unchanged'。

如何从 'Student' 实体状态获取部门变更。

当您更改导航 属性 Department 时,您不会更改实体 Student 因为在其中进行更改的是 的 foregeing key部门,所以如果你想得到状态,你需要知道改变的不是实体状态而是关系状态,所以你可以得到[=14=的状态] 像这样:

要获取条目,请使用:

var objCtx = ((IObjectContextAdapter)ctx).ObjectContext;
//In your case use the EntityState.Modified
var objentr = objCtx.ObjectStateManager.GetObjectStateEntries(EntityState.Modified);

要更改:

((IObjectContextAdapter)context).ObjectContext.ObjectStateManager.
              ChangeRelationshipState(student, oldDepartment,
                                      c => c.Department, EntityState.Modified);

问题解释后更新:

鉴于我所说的导航 属性 Department 也适用于 Breeze,因此请参阅文档中的这一部分 Navigations properties - EntityState and PropertyChanged events after setting.

为什么不直接将 DepartmentID 属性 添加到学生?当 Department 更新时,DepartmentID 也会更改,EntityState 也会更新。