【发布时间】:2015-12-09 03:07:03
【问题描述】:
这是我的模型类,我们有一个类型,可以是僵尸或人类。
public class User
{
public int ID { get; set; }
public string Name { get; set; }
public Type Type { get; set; }
public List<Weapon> WeaponsInList { get; set; }
}
public enum Type
{
[Description("Zombie")]
Zombie,
[Description("Human")]
Human
}
目前,它正在将数据保存在 Int 中。
我想将数据保存为 Human 和 Zombie,而不是 int。
【问题讨论】:
-
枚举是一个静态对象,将它保存到数据库中没有任何意义...实际上您应该在数据库中定义项目,然后使用 T4 模板在代码中生成您的枚举。跨度>
-
一个枚举值是一个int。你真的应该这样保存它。除非您有非常好的理由将其作为字符串存储在数据库中。我想您没有。
-
@Pierre-LucPineault :将其存储为 int 不危险吗?不是所有的人都需要做的就是重新排序枚举,然后你的数据库中的所有值都指向错误的枚举而没有任何警告
-
@Diskdrive 您可以为您的枚举分配一个特定的整数,这样即使重新排序它也不会改变(通常是 2 的幂,因此您可以将其声明为“标志”)。但通常你只是不会为了好玩而重新排序枚举。
-
@Pierre-LucPineault,Diskdrive 指的是一个真正的问题。枚举可以出于有趣以外的原因进行安排,无论是有效的还是偶然的。这是存储字符串的更强大的解决方案;那些不会改变。但如果他们这样做了,不会丢失任何数据,只需要更新数据库即可。另外,以这种方式查看表格更有效率,并且无需对值进行编号,这对非标志枚举很好。事实上,这就是 xml 序列化的工作方式。所以,至少有一些 MS 开发者同意 Diskdrive。
标签: c# .net entity-framework c#-4.0