LINQ-to-SQL - 无法将null值分配给具有type的成员

时间:2011-06-02 09:25:26

标签: c# sql linq linq-to-sql

我正在处理LINQ查询的问题。这已经有一段时间了,但我们对数据库进行了回滚,现在它无法正常工作。

基本上,我在一个有自动生成BigInt PK的表中插入一个新行。但是当调用SubmitChanges时,我收到此错误:

  

无法将空值赋给a   类型为System.Int64的成员   不可为空的值类型

我已经查看了生成的SQL,这个问题似乎很可能在插入之后发生了:

  

SELECT CONVERT(BigInt,   SCOPE_IDENTITY())AS [value]

这似乎是返回null,但我不知道为什么。表和LINQ dmbl都设置正确,可以自动生成PK。

有什么想法吗?

编辑:经过一些调试,包括在某人亲切建议的情况下在SQL中手动插入插入,我偶然发现了一个非常奇怪的问题 -

'列或表达'未完成'无法更新'

Outstanding是一个不可为空的十进制(9,2)字段

1 个答案:

答案 0 :(得分:3)

看看this thread - 其他人有同样的错误,同样的情况。事实证明,运行实际插入时存在问题,导致没有插入记录。然后,当调用SCOPE_IDENTITY()时,它返回null,因为没有插入记录。

尝试通过Sql Management工具将相同值的Insert直接运行到表中,然后查看该行是否正确插入。可能还有一些其他问题阻止了这种情况(除了自动生成PK),这将是问题的根本原因。