2008-12-11 15 views
5

我剛剛開始使用LINQ到SQL,並遇到插入帶有自動遞增字段的記錄的問題。LINQ到與標識增量字段的SQL錯誤

我已經創建了由linq定義的公司對象的新實例。它已將自動遞增字段「companyID」初始化爲0. InsertOnSubmit()失敗,並顯示以下invalidOperationException。

爲 構件不正確的自動同步規範 'companyID'

列屬性IsDbGenerated是真實的companyID屬性。 我正在使用sql server 2000.

編輯:自動同步設置爲OnIsert。 dataype在TSQL中是BigInt,在c#中很長。

有誰知道爲什麼會出現這個錯誤,以及如何解決?

感謝

回答

9

找到了答案。這與主鍵有關。在linq設計器中,主鍵是按照它們應該設置的。在數據庫中,相關字段未被設置爲主鍵。我將這些密鑰固定在數據庫中,解決了這個問題。

+1

這聽起來像是你手動編輯了L2S文件。我會建議始終讓文件從數據庫中自動生成(使用SQL金屬或設計器)。正如你在這裏看到的那樣,直接編輯會導致不一致的發生。 – jeremcc 2009-02-20 04:30:35

1

什麼是「自動同步」屬性在該類/表中的值?

我剛剛檢查了我的身邊,它被設置爲'OnInsert'。此外,「自動生成的值」設置爲true。

3

什麼是數據類型?詮釋? (int TSQL和C#?)

你有什麼自動同步設置?對於主鍵,應該是「OnInsert」

2

同樣的問題。 在數據庫中設置主鍵並在DBML上更改自動同步屬性爲"OnInsert" 012xx幫助

1

僅當在數據庫中插入值時設置插入選項。如果您對數據庫的安全選項沒有任何問題,則始終在數據庫中使用從不選項。

0

如果可能,請刪除數據庫並重新創建。我的情況是當我忘記在桌子上添加主鍵時。然後在第一次插入數據庫之後,我得到了關於缺少主鍵的消息。我在dbml designer中手動應用了這個,但是第一個ID已經被使用了,導致了'不正確的自動同步'異常。