我正在使用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。
有关为何不会发生这种情况的任何建议?
答案 0 :(得分:1)
迟到总比没有希望,但我今天遇到了同样的问题。
在XSD上,突出显示标识列,然后按F4。当“属性”窗格出现时,您可能会看到AutoIncrement设置为False。将此更改为True,它应该开始工作。不确定为什么会在随机的场合发生这种情况,但希望这会帮助你。