2011-06-02 37 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

相關問題