Я посмотрел на некоторые ответы на вопросы, похожие на эти, но, похоже, они не применяются.
Я пытаюсь проанализировать данные из внешнего источника и сохранить их в свои собственные данные хранить. Полученные данные имеют формат json и иногда имеют идентичные записи для определенного объекта
Пример json:
{
"Functions:" [
{
"FunctionName" : "FuncName1",
"Arguments": [
{
"Name": "name1",
"Type": "type1"
}]
},
{
"FunctionName": "FuncName2",
"Arguments": [
{
"Name": "name2",
"Type": "type2",
"Nilable": false
}]
},
{
"FunctionName": "FuncName3"
"Arguments": [
{
"Name": "name1",
"Type": "type1",
"Nilable": false
}]
}]
}
В этом примере вы видите, что он возвращает определения для функций и аргументы, которые принимают функции. Вы должны заметить, что FuncName1 и FuncName3 имеют одинаковую подпись аргумента, и поэтому я хочу, чтобы они были одной и той же записью в таблице аргументов, а не новыми.
Я десериализовал весь родительский объект в соответствующие классы (в данном случае это RootObject , Функция и Аргумент классы
Вспомогательные объекты этих классов имеют больше свойств, таких как Идентификаторы, идентификаторы внешнего ключа и свойства nav для сохранения в БД. Также, в случае класса Argument, у меня есть «HasAlternatKey», назначенный для Name и Type (так как их комбинация должна быть уникальной)
Десериализация идет хорошо, но когда я добавляю сущность в RobObject DbContext и пытаюсь сохранить, я получаю ошибку
Экземпляр типа сущности 'Аргумент' не может быть отслежен, потому что другой экземпляр с значение ключа '{Name: name1, Type: type1} "уже отслеживается. При присоединении существующих объектов убедитесь, что Прилагается только один экземпляр сущности с данным значением ключа.
Как мне избежать этого?