添加新的子项后,更新实体框架DbContext缓存(导航集合属性)

时间:2018-09-05 19:36:54

标签: c# entity-framework entity-framework-6

我有一些代码将父记录的新子记录(“安装日期”)添加到我的DbContext中。我刚刚注意到,在向集合中添加一个后,父对象的InstallmentDates集合(导航属性)不会更新为包含新对象。这就是我所期望的。但是在添加下一个后,InstallmentDates属性将更新并包含添加的第一个。

List<PayPlanInstallmentDate> installmentDates = new List<PayPlanInstallmentDates>();

foreach (var installmentDateSpec in payPlanSpec.InstallmentDates)
{
    var dbInstallmentDate = CRMEntity<PayPlanInstallmentDate>.GetOrCreate(installmentDateSpec.ID);

    if (dbInstallmentDate.ID == Guid.Empty) dbInstallmentDate.ID = Guid.NewGuid();
    dbInstallmentDate.fk_PayPlanID = dbPayPlan.ID;
    dbInstallmentDate.InstallmentNumber = installmentDateSpec.InstallmentNumber;
    dbInstallmentDate.DueDate = installmentDateSpec.DueDate;

    installmentDates.Add(dbInstallmentDate);
}

CRMEntity<PayPlanInstallmentDate>.GetOrCreate最终调用的位置:

public virtual T AddNew(T newEntity)
{
    return DBContext.Set<T>().Add(newEntity);
}

我可以看到为什么会发生这种情况,因为当我Add新实体时,它尚未与外键关联。但是,结果是dbPayPlan.PayPlanInstallmentDates除了最后添加的以外都剩下了。如果不包含任何新记录或全部包含新记录,我会好的,但是除了一个以外的所有记录都可能有问题。有没有一种方法可以使它再次刷新而无需Add进行任何操作?

0 个答案:

没有答案