当微风子实体更新时,父实体状态不变

本文关键字:实体 状态 微风 更新 | 更新日期: 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也将更新。