我们开始转换为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好运?有什么建议?
答案 0 :(得分:2)
linq查询不支持此类映射。问题是CounterpartyFlag字段可以映射到'y','n'值,但表达式中的'false'不能。
您可以对CounterpartyFlag字段类型使用枚举:
public enum
{
[MapValue('y')] Yes,
[MapValue('n')] No
}
这应该有用。