2011-01-14 44 views
0

我們正在開始轉換爲BL Toolkit,但遇到了一些問題並未找到答案。其中一個問題是無法正確地映射我們的DTO上的MapValue屬性。BLToolkit MapValue未映射

使用T4模板,我們生成此(作爲一個例子):

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

我們的數據庫是Sybase和場counterparty_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?有什麼建議麼?

回答

2

這種類型的映射不支持linq查詢。問題是CounterpartyFlag字段可以映射爲'y','n'值,但是表達式中的'false'不可以。

可以使用枚舉爲CounterpartyFlag字段類型:

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

這應該工作。

+0

謝謝,這似乎讓我們超越了這個障礙。 – 2011-01-14 23:11:22