Обновления EntityFramework синхронизируются с данными - PullRequest
0 голосов
/ 30 октября 2019

У меня есть два класса:

[Table("Accomplishments")]
public class Accomplishment : AuditedEntity 
{

    [Required]
    public virtual string Name { get; set; }

    public virtual int? CriteriaGroupId { get; set; }

    [ForeignKey("CriteriaGroupId")]
    public CriteriaGroup CriteriaGroupFk { get; set; }

}

 [Table("CriteriaGroups")]
public class CriteriaGroup : CreationAuditedEntity 
{       
    public List<CriteriaGroup> Groups { get; set; }
}

У меня есть пользовательский интерфейс, где у меня есть действие сохранения для создания или обновления всего выполнения с подклассами.

Моя проблема заключается в том, что:

Первый раз: пользователь через пользовательский интерфейс выбирает CriteriaGroup1 и CriteriaGroup2 -> Сохранение в порядке, и группа критериев создается с выполнением

Второй раз: пользователь через пользовательский интерфейс выбирает CriteriaGroup3 иотмените выбор CriteriaGroup1 - >> Затем я сохраняю и CriteriaGroup3 хорошо создан. Но CriteriaGroup1 должен быть удален из базы данных, и он все еще внутри.

EntityFramework не удаляет автоматически разницу между сущностями между двумя сбережениями?

Так как я могу это сделать? Как им можно управлять автоматически с помощью ядра EF?

Спасибо,

1 Ответ

0 голосов
/ 30 октября 2019

Когда вы обновляете сущность, вы должны включать дочерние сущности (сущности с внешним ключом), а также обновлять их. В противном случае, когда вы добавляете их, они продолжают добавляться без удаления уже существующих.

var accomplishment = dataContext.Accomplishments.Where(a => a.Id = id)
.Include(a => a.CriteriaGroupFk)
.FirstOrDefault();

accomplishment.CriteriaGroupFk = [Your new List]

dataContext.SaveChanges();

Теперь структура сущностей удаляет ранее связанные дочерние сущности, если их больше нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...