BLToolkit MapValue не отображается - PullRequest
0 голосов
/ 14 января 2011

Мы начинаем переходить на BL Toolkit, но решаем некоторые проблемы и не находим ответов.Одной из таких проблем является невозможность надлежащего отображения атрибута MapValue в нашем DTO.

Используя шаблоны 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, либо«п».

Однако, когда я смотрю на 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 Ответ

2 голосов
/ 15 января 2011

Этот тип отображения не поддерживается для запросов linq. Проблема в том, что поле CounterpartyFlag может быть сопоставлено со значениями 'y', 'n', но не может быть 'false' в вашем выражении.

Вы можете использовать enum для типа поля CounterpartyFlag:

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

Это должно работать.

...