如何在LINQ-to-SQL中将Enum映射到char(1)?

我有一个枚举,映射到DB上char(1)字段中的可能字段值.

public enum TestEnum: char
{
    Value1 = 'a',
    Value2 = 'b',
    ...
}

LINQ-to-SQL尝试将char字段映射为值,就像它们是枚举的名称一样.例如,对于“a”LINQ-to-SQL的值,尝试查找值TestEnum.a而不是TestEnum.Value1并导致异常.它仅支持整数字段的基于值的枚举映射.

可以创建一个处理转换的新属性,但由于生成的表达式不直接映射到基础字段,因此无法在查询中表现良好.

是否有另一种方法可以使LINQ-to-SQL使用枚举值来映射char(1)?

最佳答案 以下是我们现在正在做的事情:

我们在赋值期间使用System.Char作为底层类型和类型转换.例如:

entity.SomeField = (char)TestEnum.Value1;

我们在查询中使用Equals,例如:

where entity.SomeField.Equals(TestEnum.Value1);

.Equals进行转换.如果你在这里进行类型转换而不是SQL服务器添加一个不必要的NVarChar(1) – > Char(1)转换. .Equals语法不会这样做,并且出于某种原因表现正常.

点赞