使用Linq-to-sql在enql-server中存储枚举

tom*_*msv 10 .net c# enums linq-to-sql

如何使用linq-to-sql在sql-server中存储枚举?

我最终int在代码中进行了大量的转换.一定有更好的方法.我错过了什么?

sqlItem.enumValue = (int)myEnumValue;
...
myEnumValue = (MyEnumType)sqlItem.enumValue
Run Code Online (Sandbox Code Playgroud)

如果SQL服务器或LINQ将值存储为数据库中的字符串或整数并不重要,我只想避免所有这些类型转换遍及我的代码.

它可以通过我的linq-to-sql-classes的扩展方法解决,如果是这样的话会是什么样的?

Gra*_*mas 15

您可以在DBML编辑器中使用数据库中的类型映射.

假设您在Visual Studio中工作(执行这些操作的顺序会非常恼人,因为它在打开属性时会自动取消选择编辑器中的当前选择,等等):

  • 打开DBML编辑器,
  • 打开"属性"视图/选项卡
  • 在"类型"字段中指定类型.

根据我的经验,只是以形式输入类型<namespace>.<type>并不总是成功的,我认为这是@leppie所指的细微差别; 为了安全,使用global::<namespace>.<type>.

  • 如果我这样做,当我通过删除设计器中的所有表格然后将它们重新添加到设计器时,我将模型与sql数据库重新同步时,是否会丢失这些更改? (2认同)