当列是标识列时,NDbUnit不会设置XML中指定的主键字段

时间:2011-09-14 18:07:57

标签: sql-server ndbunit

我正在使用NDbUnit对我的数据访问层进行单元测试。

构建用于使用数据行填充各种表的XSD和关联XML文件时,一切都运行正常。但是我刚才注意到,当它是一个标识列时,我无法通过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);

然而,即使我做了这个更改,我现在也会在插入行时收到以下错误:

  

无法在表'myTable'中为identity列插入显式值   当IDENTITY_INSERT设置为OFF时。

这让我相信在NBDUnit方法上设置的InsertIdentity标志实际上并没有为SQL Server中的特定表设置IDENTITY_INSERT为OFF。

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

1 个答案:

答案 0 :(得分:1)

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

在XSD上,突出显示标识列,然后按F4。当“属性”窗格出现时,您可能会看到AutoIncrement设置为False。将此更改为True,它应该开始工作。不确定为什么会在随机的场合发生这种情况,但希望这会帮助你。