在我的c#代码中,我有一个向数据库插入数据的操作,但是它抛出了异常。
无法将值NULL插入到列'BoxID',表'Moroccanoil_Replicated.dbo.Boxes';该列不允许为空。插入失败。
然而,当我调试这段代码时,我发现盒子实际上不是空的,另外,当我在SQL SM中测试相同的插入语句时,它完全正常工作。
编辑:
由于某些原因,根据分析器实际执行的查询如下:
exec sp_executesql
N'INSERT [dbo].[Boxes]([MasterBoxID], [DateTime], [Reported], [StationID])
VALUES (NULL, @0, @1, @2)
SELECT [BoxID]
FROM [dbo].[Boxes]
WHERE @@ROWCOUNT > 0 AND [BoxID] = scope_identity()',
N'@0 datetime2(7),@1 bit,@2 int',@0='2015-11-30 13:37:46.4714394',@1=0,@2=7
有人知道为什么会出现这种情况吗?如何解决?
更多相关信息: - 异常发生在db.SaveChanges()调用上,而不是插入操作上。 - BoxID未定义为identity。
以下是带有插入值的调试模式代码截图: 以下是同样可以正常工作的SQL插入语句截图: