Редактировать: ПОЛУЧИЛ ЭТО! Спасибо за помощь, люди :) Я опубликовал «решение» в конце , хотя я не знаю, поможет ли оно кому-нибудь, это было в основном из-за плохого дизайна с моей стороны ..
Я получаю DbUpdateException при попытке .SaveChanges()
Произошла ошибка при сохранении сущностей, которые не предоставляют свойства внешнего ключа для своих отношений. Свойство EntityEntries вернет значение NULL, поскольку один объект не может быть определен как источник исключения. Обработка исключений при сохранении может быть упрощена путем предоставления свойств внешнего ключа в типах объектов. Подробности смотрите в InnerException.
InnerException
:
Нарушение ограничения PRIMARY KEY «PK_ProduitDepot_1» ... Невозможно вставить дубликат ключа в объект Produit-Depot ..
Вот некоторый код, который я использую, чтобы увидеть, какие объекты должны быть сохранены:
Dim allEntries = MyContext.ChangeTracker.Entries
Dim unchangedEntities As New Dictionary(Of Object, EntityState)
For Each entry As DbEntityEntry In allEntries
Dim NotUnchangedEntity = entry.Entity
If MyContext.Entry(NotUnchangedEntity).State <> EntityState.Unchanged Then
unchangedEntities.Add(entry.Entity, MyContext.Entry(entry.Entity).State)
End If
Next
MyContext.Database.Log = AddressOf Console.WriteLine
context.SaveChanges()
Я вижу в режиме отладки, что неизмененный объект пуст.
Что-то мне не хватает в EF? Я не понимаю, почему вообще будет выполняться любой SQL, если в кеше моего контекста есть только неизмененные сущности ...
Таблица Produit-Depot - это таблица соединений с отношением * к *, поэтому EF не создала класс для этой таблицы (это первый проект базы данных)
Дайте мне знать, если что-то неясно.