2014-05-21 28 views
0

我有一個相當獨特的問題,所以我想我會在這裏問:獲得唯一的ID從數據庫中的非唯一列 - asp.net mvc的代碼首先

我需要放在一起的Code First模型用戶有2個ID字段,一個唯一的(分別識別每個用戶)和一個對每個用戶都不唯一(用於分組目的)的字段。

我怎麼去那裏得到一個場,有時從數據庫中獲取其值(唯一一個),有時被我的代碼設置(當我使用它進行分組)?

是否有任何的註釋,可以幫助,所以當我分配一個值,這是所使用的,當我不指定任何東西,它會自動獲得一個新ID?

+0

所以你會想要一個主要的ID,這將是唯一的。只要你添加一些東西到你的數據庫,這個會自動創建。然後,您想要的其他標識(group_id)是唯一需要設置的標識。如果不提供它,可以將數據庫設置爲將group_id自動設置爲1(默認值)。 – Bobo

+0

我的問題是:如果我沒有爲它提供一個值,並且在其他時間有我想要的任何值,我可以以某種方式獲得唯一的group_id嗎? – Ivan

+0

嗯......我不知道有什麼辦法可以在數據庫本身做到這一點,但也許你正在訪問它的地方,你可以保留你已經擁有的所有group_ids列表。所以,當你想要一個獨特的,只需添加一個到你擁有的最大的一個,並使用它? – Bobo

回答

1

做到這一點,有DB產生價值的唯一方法是使用觸發器。由於這是一個代碼優先的項目,你可能不想這樣做。

最好的解決方案,IMHO,是使所述的GroupId一個GUID,然後將其在該數據對象的構造設置爲Guid.NewGuid()。這樣,默認情況下它總是具有唯一的值,如果您設置了屬性,它將使用您提供的值。您在默認情況下獲得唯一性,並在需要時進行分組。由於它在代碼中維護,所以您不必擔心在其他地方維護觸發器。