我有以下问题。我正在使用 Dapper 连接到数据库,数据库中的 varchar 字段是我对象中的枚举。如果枚举与数据库中的字符串同名,Dapper 将数据库对象映射到我的 DTO 没有问题。不幸的是,数据库中的字符串不是很用户友好,我想知道是否有办法映射它们或转换(仅枚举)以使用更用户友好的版本。例如,一个字段的数据库值:
SomeVeIRdLooking_Value
我希望它映射到:
public enum MyEnum {
MyFormattedValue
}
您可以从数据库中选择字符串值并手动转换它。
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();
这已经快 8 年了,但如果这对其他人有帮助,您可以使用查询更正“错误”的数据库值
SELECT *,
CASE DbColumnName
WHEN 'SomeVeIRdLooking_Value'
THEN 'MyFormattedValue'
WHEN 'SomeOtherWierd_Value'
THEN 'MyOtherFormattedValue'
ELSE DbColumnName
END AS DbColumnNameFix