我有一些代码将父记录的新子记录(“安装日期”)添加到我的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
进行任何操作?