Dapper:将字符串转换为枚举

7

我是Dapper的新手,正在尝试弄清楚它是否可以处理将数据库字符串映射到枚举类型;默认情况下没有这种功能。

例如,假设我使用以下SQL语句

select customer_type from customers

并且这个类

public class Customer
{
    ...
    public CustomerType CustomerType { get; set; }
    ...
}

使用此枚举

public enum CustomerType
{
     Unknown,
     SomeCustomerType,
     ...
}

在这种情况下,我总是最终得到默认的���举值(Unknown),而不是从数据库映射字符串值。 有人知道我怎么能做到这一点吗? 编辑: 我知道使用数字字段可以实现这一点,因为数字将转换为枚举类型,但这样做的缺点是必须确保数据库ID和枚举类型保持同步。 我正在寻找类似但使用字符串的东西。

2
谢谢,但我已经看到那个答案了。那只是一个变通方法。我宁愿不为每个枚举属性创建一个影子属性。 - johnB
1
为什么不直接在数据库中使用数字列呢?只需为枚举值分配显式值(即使是冗余的),以避免它们发生变化,保持它们同步非常容易。这也比字符串更节省空间,更容易检查一致性。 - Alejandro
3
我正在处理一个庞大的代码库和数据库,所以这将需要大量的工作。它的缺点是如果它们不同步,则会悄无声息地失败。 - johnB
1个回答

0
如果您将列名别名设置为与属性名称相同,那么也应该可以工作:
SELECT REPLACE(customer_type, ' ','') As CustomerType FROM customers
如果数据库中的customer_type字段的值有任何空格,您还可以使用replace函数来删除空格。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接