【问题标题】:Store enums in sql-server using Linq-to-sql使用 Linq-to-sql 在 sql-server 中存储枚举
【发布时间】:2011-10-20 14:04:14
【问题描述】:

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

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

sqlItem.enumValue = (int)myEnumValue;
...
myEnumValue = (MyEnumType)sqlItem.enumValue

SQL Server 或 LINQ 将值作为字符串还是整数存储在数据库中并不重要,我只是想避免所有这些类型转换散布在我的代码中。

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

【问题讨论】:

    标签: c# .net linq-to-sql enums


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 还要确保enumDataContext 定义在同一个命名空间中,否则会失败:\
    • 嗯,或者是在命名空间中包含using 语句?太长记不住了:)
    • @leppie 我确实做到了,已修复;我认为我的更新适当地解决了您提出的问题 - 您能否为您的情况确认这一点?
    • 它在某个代码库中 :) 会尝试寻找它。我们不再是该代码的所有者。
    • 如果这样做,当我通过从设计器中删除所有表然后将它们重新添加到设计器来重新同步模型与 sql 数据库时,我会丢失这些更改吗?
    猜你喜欢
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多