2017-08-14 118 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作为一种属性。