我进行单元测试将数据记录添加/插入到列名为Id的表中,该表是标识列。
在单元测试中,我手动插入id。所以我可以在Insert语句之前将Identiy_Insert设置为ON。
为生产服务器启用此功能是否有任何缺点?
或者我应该更改单元测试方法?为“名称”字段插入值并检索
和ASSERT它应该足够证明已经为集成插入了数据记录
缘故。
答案 0 :(得分:2)
它不是一个可以保持开启的功能。每个连接都有效。
试一试,在SSMS上打开连接并将其设置为ON到一个表。 然后打开另一个连接,您将看到如果您尝试在同一个表上插入IDENTITY,它将失败。
答案 1 :(得分:0)
来自MSDN:
任何时候,会话中只有一个表可以将IDENTITY_INSERT属性设置为ON。如果某个表已将此属性设置为ON,并且为另一个表发出了SET IDENTITY_INSERT ON语句,则SQL Server将返回一条错误消息,指出SET IDENTITY_INSERT已经为ON并报告其设置为ON的表。
通常,我不建议在生产中使用IDENTITY_INSERT来避免并发问题。 至于单元测试,我建议创建一个模拟的数据访问层,而不是依赖于真实的数据库。