Я использую NDbUnit для модульного тестирования моего уровня доступа к данным.
Все работало нормально при создании XSD и связанных XML-файлов, которые используются для заполнения различных таблиц строками данных. Однако я только что заметил, что не могу установить PK напрямую через XML для целочисленного столбца PK, когда это столбец идентификаторов.
т.е. Когда база данных автоматически обрабатывает приращение и установку PK при вставке строки, NDbUnit не может переопределить это и установить его сам (насколько я вижу).
Есть ли какой-нибудь способ для NDbUnit переопределить это значение столбца идентификаторов и установить его непосредственно из XML, или я застрял с автоматически увеличивающимся значением, которое SQL Server создает для вставленной строки? Или есть другой шаблон, который я должен использовать, чтобы вставить строку со столбцом идентификаторов, а затем впоследствии использовать это значение в качестве FK для строки другой таблицы?
Обновление:
Я обнаружил, что когда вы выполняете операцию над базой данных NDbUnit, вам нужно установить параметр InsertIdentity, а не просто Insert:
INDbUnitTest database = new NDbUnit.Core.SqlClient.SqlDbUnitTest(connectionString);
database.PerformDbOperation(DbOperationFlag.InsertIdentity);
Однако даже после того, как я внес это изменение, я теперь получаю следующую ошибку при вставке строк:
Невозможно вставить явное значение для столбца идентификаторов в таблице 'myTable'
когда IDENTITY_INSERT установлен на OFF.
Это заставит меня поверить, что флаг InsertIdentity, устанавливаемый для метода NBDUnit, фактически не устанавливает IDENTITY_INSERT в значение OFF для конкретной таблицы в SQL Server.
Любые предложения о том, почему этого не произойдет?