实体 ria 保存后删除导航 属性 值

entity ria dropping navigation property values after save

我在使用 Silverlight 5、Ria 和 Entity Framework 时遇到问题。

保存修改后的实体时,SubmitChanges() 调用 returns 并将实体的某些导航属性设置为 null。保存正确发生;保存正确的值,如果稍后调用实体,则正确读入值,使用正确的值设置导航属性。

但是客户端的上下文正在更新为空值并且屏幕验证正在启动。

在保存前更改设置:

保存后立即更改设置:

有人知道为什么会这样吗?

我试过保存后刷新数据;通过调用用于填充屏幕的相同查询,LoadBehavior.RefreshCurrent。数据由它的父实体重新调用,因此当它被刷新时 所有子实体 现在都将它们的导航属性设置为 null。不仅仅是修改后的实体。

public kcc_Incentive GetKcc_IncentiveByID(Guid IncentiveID)
{
    //kcc_Incentive Incentive = this.ObjectContext.kcc_Incentive.Where(i => i.IncentiveId == IncentiveID).FirstOrDefault();
    //if (Incentive != null)
    //{

    //    Incentive.kcc_IncentiveProductType.Load(); //these are the entities I'm having trouble with
    //    foreach (kcc_IncentiveProductType t in Incentive.kcc_IncentiveProductType)
    //    {
    //        t.rate_FullModelReference.Load();
    //        t.rate_BaseModelReference.Load();
    //        t.rate_SeriesReference.Load();
    //    }
    //}
    //return Incentive; 

    //getting same results regardless of how it is loaded

    return ObjectContext.kcc_Incentive
        .Include("kcc_IncentiveProductType.rate_FullModel")
        .Include("kcc_IncentiveProductType.rate_BaseModel")
        .Include("kcc_IncentiveProductType.rate_Series")
        .Include("kcc_IncentiveProductType.rate_ProductType.dms_Make")
        .FirstOrDefault(i => i.IncentiveId == IncentiveID);
}

谁能帮我保存我的价值观?

我发现了问题,它与我的逻辑工作方式非常相关。原来是一些级联逻辑将我的ids设置为null。这是我学到的,以防有人(或将来我自己)遇到类似问题。

如果您的实体中有额外的客户端属性,这些属性将在 SubmitChanges 调用期间被清除。服务器不知道它们,它们被设置为该类型的默认值。

如果您碰巧有这些客户端属性何时更改的逻辑,那么在保存期间,随着值被服务器清除,该逻辑将 运行。在我的例子中,我需要在保存之前抑制 属性 更改的逻辑,然后重置客户端属性。