淘汰SPA
当我添加/更新子实体时,父实体状态不会更改。
在场景之后我使用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; }
}
当我更新'部门'学生实体状态保持不变'。
如何从“学生”中获得部门变更?实体国家。
答案 0 :(得分:1)
当您更改导航属性Department
时,您不会更改实体Student
,因为对此进行更改的是部门的标记键,因此,如果你想获得状态,你需要知道不是被改变的实体状态,它是被改变的关系状态,所以你可以像这样获得ObjectContext
的状态:
要获取条目,请使用此选项:
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中的此部分。
答案 1 :(得分:0)
为什么不直接将DepartmentID属性添加到学生?部门更新后,DepartmentID也会更改,EntityState将更新。