2011-01-14 5 views
0

BL Toolkitへの変換を開始していますが、いくつかの問題が発生し、回答が見つからない場合があります。そのような問題の1つは、DTOのMapValue属性を適切にマップすることができないことです。当社のデータベースには、Sybaseであり、フィールドcounterparty_flは 'Y' または 'N' のいずれか受け付けCHAR(1)であるBLToolkitマップ値がマッピングされていません

[MapField("counterparty_fl")] 
[MapValue(true, 'y')] 
[MapValue(false, 'n')] 
public bool CounterpartyFlag { get; set; } // flag_yn_TY(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

私はこれについて質問があります。このInsertメソッドを使用する:public static int Insert (このテーブルターゲット、式>セッター)。 "CounterpartyFlag = false"は正常に機能します。だから、どうやらテーブルのDTOから直接挿入すると、変換は成功します。あなたが説明できるならば、違いは何ですか?私は好奇心が強いですし、チームメイトも知りたいと思っています。 –

関連する問題