我们开始转换到BL工具包,但遇到了一些问题,找不到答案。一个这样的问题是无法正确地映射DTO上的MapValue属性。
使用T4模板,我们生成以下内容(作为示例):
[MapField("counterparty_fl")]
[MapValue(true, 'y')]
[MapValue(false, 'n')]
public bool CounterpartyFlag { get; set; } // flag_yn_TY(1) 我们的数据库是Sybase,字段counterparty_fl是一个字符(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更走运?有什么建议吗?
发布于 2011-01-15 06:01:21
linq查询不支持此类型的映射。问题是CounterpartyFlag字段可以映射到'y','n‘值,但表达式中的'false’不能。
您可以将枚举用于CounterpartyFlag字段类型:
public enum
{
[MapValue('y')] Yes,
[MapValue('n')] No
}这应该是可行的。
https://stackoverflow.com/questions/4695769
复制相似问题