Импорт данных, проблема экспорта C # / SQL Server - PullRequest
0 голосов
/ 26 июня 2011

Мне нужно реализовать модуль экспорта-импорта для трех таблиц базы данных, которые внутренне связаны с ограничениями первичного ключа / внешнего ключа.

Я могу легко выполнить обе части, используя c # / linq to xml / linq to sql. Проблема заключается в том, что когда я импортирую экспортированные данные, в базе данных идентификатор таблиц первичного ключа регенерируется без получения / назначения идентификатора из файла XML (это естественно для автоматического увеличения). Для этого данные других таблиц не могут быть импортированы / показаны ошибки, которые нарушает ограничение первичного ключа.

Моя цель - импортировать все данные и сохранить первичный / внешний ключ без изменений.

Теперь, кто-нибудь может предложить мне, пожалуйста, что я могу сделать, чтобы решить эту проблему? Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 26 июня 2011

Вы можете использовать идентификатор вставки , чтобы указать значение для столбцов идентификаторов.

Если вы укажете явные значения для столбцов идентификаторов, вы сами несете ответственность за разрешение конфликтов.Если в базе данных уже есть строка с id = 1, вам нужно решить, что делать, если импорт также содержит id = 1: SQL Server просто выдаст ошибку.

1 голос
/ 26 июня 2011

Мы всегда использовали операции BCP для таких задач.

0 голосов
/ 26 июня 2011

Если вам не нужны идентификаторы в XML и SQL для сопоставления (только отношения), вы можете использовать SCOPE_IDENTITY() и поддерживать отображение из идентификаторов XML в идентификаторы SQL для правильной вставки столбцов внешнего ключав других таблицах.

0 голосов
/ 26 июня 2011

Я бы посоветовал не делать ваш автоинкремент первичным ключом, а иметь отдельный первичный ключ, который можно определить как-то еще ... тогда у вас не будет проблем с автоинкрементом

...