Я просматриваю XML-файл статей и журналистов, которые их написали. Когда мы добавляем статьи в _Data наш datacontext, мы можем встретить журналиста, который нуждается в добавлении, поэтому мы делаем это:
newJourno = New journalist With {.name = strJournalist}
_Data.journalists.InsertOnSubmit(newJourno)
.articles_journalists.Add(New articles_journalist With {.id_journalist = newJourno.id, .id_article = .id})
Однако впоследствии мы можем снова встретиться с этим же журналистом, и при этом мы ничего не вернем:
Dim journo = _Data.journalists.Where(Function(s) s.name = strJournalist).SingleOrDefault
Таким образом, он снова использует приведенный выше код для повторной вставки того же журналиста.
После того, как все наши вкладыши сделаны, мы отправляем изменения. На данный момент он имеет форму головы:
Оператор INSERT противоречит ограничению COLUMN FOREIGN KEY 'FK_articles_journalists_journalists'. Конфликт произошел в базе данных «бла», таблице «журналисты», столбце «id». Заявление было прекращено.
Просматривая SQL, созданный в SQL Server Profiler, вы можете увидеть, что он пытается добавить некоторых журналистов более одного раза, но это не удастся, так как имя должно отличаться. Последующие записи, которые пытаются вставить с этими журналистами, терпят неудачу, поскольку журналист не обновлялся.
Конечно, если у меня есть коллекция журналистов, добавьте в нее некоторых, а затем посмотрите в моей коллекции, я должен увидеть их всех, а не только оригиналов. Я могу выдумать это, я полагаю, отправляя изменения, но это кажется немного глупым.
Заранее спасибо,
Дэйв.