У меня возникла непредвиденная проблема при попытке удалить дочернюю сущность из одной родительской записи базы данных.После выполнения некоторых тестов мы повторили проблему.Наш код C # использует базу данных Northwind.
NWModel context = new NWModel();
Orders order = context.Orders.Where(w => w.OrderID == 10248).FirstOrDefault();
context.Entry(order).Collection(typeof(Order_Details).Name).Load();
order.Order_Details.RemoveAt(1);
System.Data.Entity.Infrastructure.DbChangeTracker changeset = context.ChangeTracker;
var changes = changeset.Entries().Where(x => x.State == System.Data.Entity.EntityState.Modified).ToList<Object>();
var detetions = changeset.Entries().Where(x => x.State == System.Data.Entity.EntityState.Deleted).ToList<Object>();
Все отлично работает с оригинальной настройкой таблицы Order_Details.
Удачи var правильно получили удаленную запись.
Для воспроизведениявыпуск, мы добавили в таблицу Order_Details новое поле PK identity в int (OrderDetailId int identity);после этого: var удалений не содержат записи, в то время как var changes содержат Order_Detail запись.
EF set Orders свойствоиз Order_Detail , чтобы обнулить и пометить запись как Обновлено .
Я нашел много статей по этой проблеме, все они предлагают пометить Order_Detail Заказы свойство до [Обязательно] .
Я пытался установить атрибут [Обязательный] на объекте FK, как предложено в этой записи , (в этой статье описывается поведение EFCore, такое же, как поведение EF6) но это не решает мою проблему.
Ожидается ли такое поведение?
Мы будем благодарны за любые комментарии и предложения.
Спасибо