0

BL Toolkit への変換を開始していますが、いくつかの問題が発生しており、解決策が見つかりません。そのような問題の 1 つは、DTO の MapValue 属性を適切にマップすることができないことです。

T4 テンプレートを使用して、これを生成します (例として)。

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

私たちのデータベースは Sybase で、フィールド counterty_fl は 'y' または 'n' のいずれかを受け入れる char(1) です。

しかし、次のリンク クエリによって生成された 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 で運が良かった人はいますか? 助言がありますか?

4

1 に答える 1

2

このタイプのマッピングは、linq クエリではサポートされていません。問題は、CounterpartyFlag フィールドを 'y'、'n' 値にマップできるが、式の 'false' をマップできないことです。

CounterpartyFlag フィールド タイプに列挙型を使用できます。

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

これはうまくいくはずです。

于 2011-01-14T22:01:20.540 に答える