当微风子实体更新时,父实体状态不变
本文关键字:实体 状态 微风 更新 | 更新日期: 2023-09-27 18:27:26
敲除SPA
当我添加/更新子实体时,父实体状态不会更改。
下面的场景我有这是客户端的变化跟踪使用微风
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; }
}
当我更新"学生"的"部门"时,学生实体状态保持"不变"。
如何从"学生"实体状态获取部门变更。
当您更改导航属性Department
时,您不会更改实体Student
,因为在其中进行更改的是Department的foregeing键,所以如果您想获得状态,您需要知道这不是更改的实体状态,而是更改的关系状态dd,所以您可以获得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和PropertyChanged events after setting中的本节。
为什么不将DepartmentID属性添加到Student?Department更新后,DepartmentID也将更改,EntityState也将更新。