【发布时间】:2015-03-18 18:54:22
【问题描述】:
我目前正在为一个项目使用实体框架,我的一个类有一个 Enum 代表一些值。
到目前为止,EF 将枚举保存为数据库中的数字,但我想将它们保存为它们的实际字符串名称。例如,枚举 NY 保存为 1,而不是“NY”。
我已经看到了一些方法来完成这项工作,比如拥有一个带有隐藏 Enum 私有字段的字符串属性,但我想知道是否有一种方法可以在执行 CRUD 操作时拦截 EF,然后我可以在 Data Context 类中将 Enum 更改为 String。
【问题讨论】:
-
我认为这不是一个值得解决的问题。代理键在性能和可维护性方面都非常出色。您知道州缩写在 1960 年代发生了变化吗?另外,如果添加其他城市怎么办?
-
我认为数据库中的名称比依赖于我的代码版本的一些随机数更具可读性。
-
解决数据库中的可读性问题: 1. 视图 2. 这就是你有查找表的原因 至于代码,这就是你首先使用枚举的原因。抱歉,如果您使用的是 EF,那么您的应用已经直接链接到您的数据库。
-
我目前正在研究一个以这种方式做事的遗留数据库;它会导致很多问题!至于只有三个值,如果一个非常有限的值可以作为适当的数据库设计的借口,为什么不对其进行硬编码呢?只有三个值...
-
如果它保证它自己的表它保证它自己的整数主键。它是实体还是查找都没有关系。此外,您会惊讶于查找变成实体的频率。
标签: c# sql string entity-framework enums