2010-03-19 102 views
3

我遇到了Entity Framework 4的第一次失望。事實證明,SQL CE與EF4一起使用時,does not support autogenerated primary keys。使用此消息從OnjectContext.SaveChanges()中獲取System.Data.UpdateException:生成實體鍵

SQL Server Compact不支持服務器生成的密鑰和服務器生成的值。

所以,現在我不得不爲我的實體手動生成密鑰。假設我想要使用自動遞增的整數鍵,那麼在使用Entity Framework時,最好的方法是如何生成和跟蹤鍵?謝謝你的幫助。

回答

4

在您的問題鏈接的底部是一個建議的解決方案。請參閱SQL Compact, Identity Columns and Entity Framework也許您可能想要實施一種擴展方法,如上所述。

+0

太好了 - 謝謝! – 2010-03-20 01:30:45

+0

好的答案,但不幸的是,鏈接頁面上的代碼僅適用於未過濾的實體集,因爲擴展方法返回實體集中的最大ID。所以,我最終使用了一個GUID作爲實體鍵。我用這個構造函數代碼爲每個實體創建了一個部分類:this.ID = Guid.NewGuid() – 2010-03-20 22:30:13

0

我不認爲大衛的想法是一個好主意,但是,我別無選擇。 也許CE會在下一個版本中支持自動生成的主鍵。

+2

實際上,SQL Compact確實支持自動生成的鍵 - 顯然,它不支持SQL Compact自動生成的鍵。在我原來的問題中鏈接的博客文章解釋了這個問題。 – 2010-07-23 15:05:35