2011-02-06 97 views
9

對如何有效驗證CodeFirst模型的給定屬性是唯一的好奇。經典示例是成員的用戶名或顯示名稱。EF Codefirst驗證獨特的屬性?

傳統上,我可以通過在數據庫中設置唯一約束或者在試圖插入操作期間執行查找來完成此操作。我知道如何在生成後手動將這些東西添加到數據庫本身,只是想看看是否有辦法將其作爲框架提供的模式映射的一部分。

UPDATE 我發現我可以覆蓋上的DbContext,這在概念上會允許我做一個查詢,然後無效,以防止保存對象的執行validateEntity方法。我仍然很想知道是否有辦法在數據庫中應用唯一約束或類似的代碼

回答

6

Code First(和EF一般情況下)仍然本身不支持唯一約束。在this post中,我展示了一種方法來創建它們,同時您的數據庫由Code First(通過自定義Initializer類中的SQLCommand方法)創建,但與您自己手動創建它並沒有多大區別。另一種方法是您建議的ValidateEntity,但我仍然會在數據庫上創建唯一的約束。

+0

並不完美,但對我來說已經足夠好屬性,謝謝! – Paul 2011-02-07 04:20:17

0

我已經張貼了關於這個在code project

一般而言,這取決於你穿上類來生成唯一索引