1

我正在使用 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。

关于为什么不会发生这种情况的任何建议?

4

1 回答 1

1

迟到总比没有希望好,但我今天遇到了同样的问题。

在您的 XSD 上,突出显示标识列并按 F4。当属性窗格出现时,您可能会看到 AutoIncrement 设置为 False。将其更改为 True ,它应该开始工作。不知道为什么会随机发生这种情况,但希望这会对您有所帮助。

于 2014-11-21T13:48:28.143 回答