Удаление элементов свойства навигации при обновлении родительского объектаC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Удаление элементов свойства навигации при обновлении родительского объекта

Сообщение Anonymous »

В мой API отправлена ​​следующая полезная нагрузка, которая создает записи в базе данных

Код: Выделить всё

{
"id": null,
"child": [
{
"id": null,
"parentId": null
"quantity": 1,
"rate": 5.5
},
{
"id": null,
"parentId": null,
"quantity": 15,
"rate": 75.5
}
]
}
Это правильно создает родительский объект и дочерние объекты с соответствующими внешними ключами, как настроено в моей модели.
Теперь, если я отправлю это полезная нагрузка для обновления дочерних объектов, это тоже работает.

Код: Выделить всё

{
"id": "365A71AD-8625-4701-904B-E21DCF62E343",
"child": [
{
"id": "BC889B2F-1BFD-4E3E-9C23-078948A16ED5",
"parentId": "365A71AD-8625-4701-904B-E21DCF62E343"
"quantity": 999,
"rate": 150
},
{
"id": "F56C9F80-0238-4F03-9CA0-D591FCFE3537",
"parentId": "365A71AD-8625-4701-904B-E21DCF62E343",
"quantity": 115,
"rate": 5
}
]
}
Как я это сделал, в логике обновления:

Код: Выделить всё

var incomingNavigationProperties = databaseContext.Entry(incomingDtoCastedToDatabaseType).Navigations;
var existingNavigationProperties = databaseContext.Entry(existingEntityFetchedFromDatabase).Navigations;
foreach(var navObj in incomingNavigationProperties)
{
foreach(var navExist in existingNavigationProperties)
{
if(navObj.Metadata.Name == navExist.Metadata.Name)
{
navExist.CurrentValue = navObj.CurrentValue;
}
}
}
Отлично работает для обновлений, но если я отправлю ту же полезную нагрузку в логику обновления, но с отсутствующим элементом в дочернем навигационном свойстве, есть ли способ настроить EF также удалить отсутствующий объект из базы данных?
В настоящее время это не работает.
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/792 ... ent-entity
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»