Обновите кеш Entity Framework DbContext (свойство коллекции навигации) после добавления нового дочернего элемента - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть некоторый код, который добавляет новые дочерние записи («даты взноса») родительской записи в мой 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 чего-нибудь?

...