2011-01-14 2 views
0

BL Toolkit으로의 변환을 시작했지만 일부 문제가 발생하고 답변을 찾을 수 없습니다. 그러한 문제 중 하나는 DTO의 MapValue 속성을 올바르게 매핑 할 수 없다는 것입니다.BLToolkit MapValue not mapping

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

우리의 데이타베이스는베이스이고, 필드 counterparty_fl은 또는 'N'중 'Y'받는 문자 (1)이다

사용 T4 템플릿, 우리는 (예를 들어)이 발생한다. 나는 다음과 같은 링크 쿼리에 의해 생성 된 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? 어떤 제안?

답변

2

이 매핑 유형은 linq 쿼리에서 지원되지 않습니다. 문제는 CounterpartyFlag 필드를 'y', 'n'값에 매핑 할 수 있지만 표현식에서 'false'를 사용할 수 없다는 것입니다.

당신은 CounterpartyFlag 필드 형식에 대한 열거를 사용할 수 있습니다

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

이 작동합니다.

+0

감사합니다.이 장애물을 지나쳐 버린 것 같습니다. –

+0

나는 이것에 대해 질문이있다. 이 삽입 메소드 사용 : public static int 삽입 (이 표 대상, 표현식 > 설정자); "CounterpartyFlag = false"는 정상적으로 작동합니다. 그래서, 어떻게 든 테이블의 DTO로부터 직접 삽입하면, 변환이 성공합니다. 설명 할 수 있다면 차이점은 무엇입니까? 나는 궁금해서 팀원들이 알고 싶어 할 것으로 기대한다. –