2011-06-02 38 views
2
的成员

我遇到了LINQ查询问题。这工作完美了一段时间,但我们做了数据库回滚,现在它不起作用。LINQ到SQL - 无法将值分配给类型为

基本上,我将一个新行插入到具有自动生成BigInt PK的表中。但是,当的SubmitChanges叫我得到这个错误:

The null value cannot be assigned to a member with type System.Int64 which is a non-nullable value type

我看了生成的SQL,这个问题似乎插入后可能围绕arond这样的:

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

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

任何想法?

编辑:一些调试,包括SQL手动试图插入有人好心建议,我偶然发现了一个很奇怪的问题绊倒后 -

“列或表达式‘杰出’不能更新”

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

+0

如果您在SubmitChanges调用中设置断点,记录是否会以正确的自动增量ID值插入数据库? – 2011-06-02 09:31:15

+0

不,该ID设置为“0” – Chris 2011-06-02 09:33:00

+0

好吧,如果你打开你的DBML文件,问题右键点击属性(即:ID列那产生一个0,然后单击“Peroperties ..。然后检查属性“自动生成值”设置为True? – 2011-06-02 09:37:01

回答

3

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

尝试通过Sql管理工具将相同值的直接Insert运行到表中,并查看该行是否正确插入。可能有一些其他问题阻止了这一点(除了自动生成的PK),这将成为问题的根源。

+0

感谢您的帮助,我添加了一些更多的信息到我的文章,因为我遇到了一些更多的错误 – Chris 2011-06-02 09:50:36

相关问题