我正在使用 NDbUnit 对我的数据访问层进行单元测试。
在构建 XSD 和关联的 XML 文件时,一切工作正常,这些文件用于用数据行填充各种表。但是,我刚刚注意到,当整数 PK 列是标识列时,我无法直接通过 XML 为整数 PK 列设置 PK。
即当数据库在行插入时自动处理递增和设置PK时,NDbUnit无法覆盖它并自行设置(据我所知)。
NDbUnit 是否有某种方法可以覆盖此标识列值并直接从 XML 设置它,还是我坚持使用 SQL Server 为插入的行创建的自动递增值?还是我应该使用另一种模式来插入带有标识列的行,然后将该值用作另一个表行上的 FK?
更新:
我发现当您执行 NDbUnit 数据库操作时,您需要将参数设置为 InsertIdentity 而不仅仅是 Insert:
INDbUnitTest database = new NDbUnit.Core.SqlClient.SqlDbUnitTest(connectionString);
database.PerformDbOperation(DbOperationFlag.InsertIdentity);
但是,即使在我进行了此更改之后,我现在在插入行时也会收到以下错误:
当 IDENTITY_INSERT 设置为 OFF 时,无法在表“myTable”中插入标识列的显式值。
这会让我相信,在 NBDUnit 方法上设置的 InsertIdentity 标志实际上并未将 SQL Server 中特定表的 IDENTITY_INSERT 设置为 OFF。
关于为什么不会发生这种情况的任何建议?