Код: Выделить всё
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 дублируется, вызов context.Entities.Add(entity) завершится с ошибкой, указанной выше.
Перед вызовом Add я попробовал установить второй item.itemLocation коллекции обнулить и оставить только itemLocationId
В итоге у меня возникла эта ошибка:
Связь между сущностями «Item» и «ItemLocation» со значением
ключа «{ItemLocationId: 20}» разорвана, но
связь либо помечена как обязательная, либо является неявно требуется,
поскольку внешний ключ не может иметь значение NULL. Если зависимый/дочерний объект
следует удалить при разрыве требуемой связи
Поэтому я думаю, что это неправильный подход.
Что делать? Должен ли клиент, отправляющий данные, убедиться, что этого не произойдет? Есть ли обратный вызов, к которому я мог бы подключиться, чтобы не отслеживать уже отслеживаемые объекты?
Для ясности: в этом примере ItemLocations НЕ существует в базе данных. Они предоставляются клиентом, создаются и связываются с серверной частью.
Подробнее здесь: https://stackoverflow.com/questions/793 ... ent-entity
Мобильная версия