Обработка уже отслеживаемых дочерних объектов при добавлении родительского объектаC#

Место общения программистов C#
Ответить
Anonymous
 Обработка уже отслеживаемых дочерних объектов при добавлении родительского объекта

Сообщение Anonymous »

Каковы возможные решения этой проблемы? (

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

The instance of entity type 'ItemLocation' cannot be tracked because another instance with the key value '{Id: 20}' is already being tracked
)
Вот пример структуры того, что отправляется POST в API:

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

{
"entity": {
"items": [
{
"id": 566,
"itemLocationId": 20,
"itemLocation": { "id": 20, "address": "344 Main Street" }
},
{
"id": 200
"itemLocationId": 20,
"itemLocation": { "id": 20, "address": "344 Main Street" }
}
]
}
}
Если все itemLocation различны, EF правильно связывает записи ItemLocation с их ItemLocation, как настроено в моем контексте.
Но если один ItemLocation дублируется, вызов context.Entities.Add(entity) завершится с ошибкой, указанной выше.
Перед вызовом Add я попробовал установить второй item.itemLocation коллекции обнулить и оставить только itemLocationId
В итоге у меня возникла эта ошибка:

Связь между сущностями «Item» и «ItemLocation» со значением
ключа «{ItemLocationId: 20}» разорвана, но
связь либо помечена как обязательная, либо является неявно требуется,
поскольку внешний ключ не может иметь значение NULL. Если зависимый/дочерний объект
следует удалить при разрыве требуемой связи

Поэтому я думаю, что это неправильный подход.
Что делать? Должен ли клиент, отправляющий данные, убедиться, что этого не произойдет? Есть ли обратный вызов, к которому я мог бы подключиться, чтобы не отслеживать уже отслеживаемые объекты?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ent-entity
Ответить

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

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

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

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

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