2017-08-14 101 views
0

好日子,在實體框架表中使用枚舉:用於什麼?

我一直在學習一些實體框架和我來到這個代碼

public class Test 
{ 
    public int Id { get; set; } 
    public string name { get; set; } 
    public testEnum testEnum { get; set; } 

} 
public enum testEnum { 
    numero1=1, 
    numero2=2 
} 

然後我跑添加遷移XXXXX和更新數據庫,問題是,當我去到SQL服務器,我無法在任何地方看到枚舉。 我的問題是: 1.枚舉發生了什麼,我怎麼能在SQL服務器中看到它? 2.我什麼時候使用,而不是像下面這樣的表枚舉:

public class EnumReplace{ public int Id { get; set; } 
public int value{ get; set; } 
} 

謝謝。

+0

枚舉在您的應用中定義。它不會(也不會)需要在數據庫中重複。如果你有一個類的屬性'public testEnum MyProperty {get;組; } enum的值將被存儲在與該類關聯的數據庫表中 –

+0

要更改枚舉(即添加另一個值),您將需要重新編譯您的代碼。要在EnumReplace類中顯示另一個值,只需在數據庫中添加一個新條目即可。因此,如果這些值不太可能改變,例如訂單狀態可能是'New','Processed'和'Dispatched',並且不可能改變,那麼就堅持使用枚舉。 – DavidG

回答

0
1.What happened with the enum and how can I see it in SQL server?

枚舉被存儲在數據庫表中爲一個整數。您將無法在數據庫中看到枚舉。 EF負責將底層類型轉換爲從數據庫中檢索值時定義的枚舉。

在Entity Framework中,枚舉可以具有以下基礎類型:Byte,Int16,Int32,Int64或SByte。 瞭解更多關於EF代碼支持ENUM第一here

2. When do I use enum instead of a table like the following:

當我們有一組預定義允許的屬性/字段的值,我們通常使用枚舉。對於例如

enum Days 
{ 
Sat, 
Sun, 
Mon, 
Tue, 
Wed, 
Thu, 
Fri 
}; 

你也可以使用已標記的枚舉,瞭解更多關於枚舉here

0

你必須在你的班上有枚舉。這樣的事情:

public testEnum MyProperty{ get; set; } 

所以基本上你不能有枚舉作爲表。您可以在表中使用enum作爲一種屬性。