我在我的C#項目中使用EF4。我面臨的問題是,當我嘗試保存一條記錄時,出現主鍵違例,PK值爲「0000-0000-0000-xxx」。根據我的猜測,EF不識別IsIdentity標誌並生成一個guid值。在我的表的SQL Server數據庫中,我指定了一個PK(uniqueidentifier> guid)並將其設置爲IdentityColumn,因此我希望這會傳遞到我的項目中,因爲guid是在SQL Server中生成的。有沒有辦法克服這個錯誤?當我嘗試保存新記錄或更新現有記錄時,EF返回0000-0000-0000-xxx作爲Guid?
1
A
回答
8
您必須指定Guid
ID在你的EF模型的身份。在EF 4.1:
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
如果您創建了這個模型數據庫EF將創建一個柱的newid()
默認值(Guid
ID是不是默認的身份,而相比之下,int
IDS) 。
在EF 4.0中,您可以轉到模型設計器,在設計器中標記您的Id屬性,打開屬性窗口,然後將StoreGeneratedPattern
設置爲Identity
。
2
取而代之的是:
public System.Guid ID { get; set; }
試試這個:
private System.Guid _id;
public System.Guid ID
{
get
{
if (_id == null || _id == Guid.Empty)
_id = Guid.NewGuid();
return _id;
}
set
{
_id = value;
}
}
相關問題
- 1. cakephp嘗試更新記錄ID已存在的MySQL記錄
- 2. 返回更新記錄數
- 3. 更新EF中的記錄
- 4. 更新記錄使用EF
- 5. 當存在有效記錄時,有效記錄`find`返回nil
- 6. 更新現有記錄
- 7. 上更新現有記錄
- 8. 保存後何時更新記錄?
- 9. 當我嘗試刪除一條記錄時,它創建一個新的記錄
- 10. MS Access:保存子記錄時更新父記錄
- 11. 當我嘗試更新訪問數據庫中的記錄時出現錯誤
- 12. 嘗試創建新的應用程序記錄時,返回無
- 13. 嘗試更新Laravel中的記錄
- 14. 嘗試更新記錄與PDO
- 15. Symfony2/SonataAdmin:嘗試更新記錄時出現CSRF錯誤
- 16. 創建新記錄而不是更新現有記錄
- 17. Rails ActiveRecord.new創建新記錄而不是更新現有記錄
- 18. 參考現有記錄或添加新記錄許多一對多在EF
- 19. 保存新的或更新的記錄存在與LINQ
- 20. 嘗試刪除子表單記錄返回「沒有當前記錄」
- 21. 爲什麼Hibernate嘗試使用現有ID插入新記錄?
- 22. 返回新記錄的ID
- 23. 只返回最新記錄
- 24. SQL返回最新記錄
- 25. 我嘗試添加新記錄到記錄集並出現錯誤#3001
- 26. 更新記錄或保留日誌?
- 27. 在SQL Server中插入新記錄並更新現有記錄存儲過程
- 28. 錯誤3020如果我嘗試導航到新記錄或刪除刪除宏後保存記錄
- 29. Magento 1.9.1更新自定義模塊中的記錄,嘗試插入新記錄
- 30. ExecuteCommand返回-1但不更新記錄
'_id'永遠不能爲null,因爲它是一個值類型。唯一可以與null進行比較的值類型是「可爲空值」。 –