BLToolkit MapValue没有映射

时间:2011-01-14 20:45:24

标签: linq-to-sql attributes bltoolkit

我们开始转换为BL Toolkit,但是遇到了一些问题而没有找到答案。其中一个问题是无法在我们的DTO上正确地获取MapValue属性以进行映射。

使用T4模板,我们生成它(作为示例):

[MapField("counterparty_fl")]
[MapValue(true,  'y')]
[MapValue(false, 'n')]
public bool CounterpartyFlag { get; set; } // flag_yn_TY(1)  

我们的数据库是Sybase,字段counterparty_fl是char(1),它接受'y'或'n'。

但是,当我查看由以下链接查询生成的SQL时,它正在编写[counterparty_fl] = 0.我需要的是[counterparty_fl] ='n'

var results = (from i in facade.InputList
               where (
                   i.UserIdentifier == criteria.UserId &&
                   i.CounterpartyFlag == false &&
                   i.Name == criteria.Name)
               select i);  

有没有人比MapValue好运?有什么建议?

1 个答案:

答案 0 :(得分:2)

linq查询不支持此类映射。问题是CounterpartyFlag字段可以映射到'y','n'值,但表达式中的'false'不能。

您可以对CounterpartyFlag字段类型使用枚举:

public enum
{
    [MapValue('y')] Yes,
    [MapValue('n')] No
}

这应该有用。