在使用 dapper 时映射枚举

问题描述 投票:0回答:2

我有以下问题。我正在使用 Dapper 连接到数据库,数据库中的 varchar 字段是我对象中的枚举。如果枚举与数据库中的字符串同名,Dapper 将数据库对象映射到我的 DTO 没有问题。不幸的是,数据库中的字符串不是很用户友好,我想知道是否有办法映射它们或转换(仅枚举)以使用更用户友好的版本。例如,一个字段的数据库值:

SomeVeIRdLooking_Value

我希望它映射到:

public enum MyEnum {
    MyFormattedValue
}
enums dapper
2个回答
0
投票

您可以从数据库中选择字符串值并手动转换它。

    public enum MyEnum
    {
        None,
        Success,
        Failure
    }

    var enums = connection.Query<string>("select 'None' union select 'Success' union select 'Failure'")
            .Select(x => Enum.Parse(typeof (MyEnum), x)) //use your own method to parse enum from string
            .ToList();

0
投票

这已经快 8 年了,但如果这对其他人有帮助,您可以使用查询更正“错误”的数据库值


SELECT *, 
 CASE DbColumnName 
  WHEN 'SomeVeIRdLooking_Value'
  THEN 'MyFormattedValue'
  WHEN 'SomeOtherWierd_Value'
  THEN 'MyOtherFormattedValue'
  ELSE  DbColumnName
 END AS DbColumnNameFix

© www.soinside.com 2019 - 2024. All rights reserved.