我正在处理LINQ查询的问题。这已经有一段时间了,但我们对数据库进行了回滚,现在它无法正常工作。
基本上,我在一个有自动生成BigInt PK的表中插入一个新行。但是当调用SubmitChanges时,我收到此错误:
无法将空值赋给a 类型为System.Int64的成员 不可为空的值类型
我已经查看了生成的SQL,这个问题似乎很可能在插入之后发生了:
SELECT CONVERT(BigInt, SCOPE_IDENTITY())AS [value]
这似乎是返回null,但我不知道为什么。表和LINQ dmbl都设置正确,可以自动生成PK。
有什么想法吗?
编辑:经过一些调试,包括在某人亲切建议的情况下在SQL中手动插入插入,我偶然发现了一个非常奇怪的问题 -
'列或表达'未完成'无法更新'
Outstanding是一个不可为空的十进制(9,2)字段
答案 0 :(得分:3)
看看this thread - 其他人有同样的错误,同样的情况。事实证明,运行实际插入时存在问题,导致没有插入记录。然后,当调用SCOPE_IDENTITY()
时,它返回null,因为没有插入记录。
尝试通过Sql Management工具将相同值的Insert
直接运行到表中,然后查看该行是否正确插入。可能还有一些其他问题阻止了这种情况(除了自动生成PK),这将是问题的根本原因。