2012-04-02 123 views
0

一個Object我有小巧玲瓏的一個快速的問題。我有一個查詢返回4個表。映射表4中小巧玲瓏

三表只有一個整數列。將它們稱爲field1,field2和field3。

第4張表有5列說: A,B,C,D,E。

我已經叫ResultSet的對象,擁有所有從4桌

public class ResultSet 
{ 
    int field1; 
    int field2; 
    int field3; 
    string A; 
    string B; 
    string C; 
    string D; 
    string E 
} 

如何映射結果到ResultSet對象中的字段?

目前我正在使用QueryMultiple以獲得所需的結果。但它只映射了前3列。 A,B,C,d,和E均爲空。

我不想使用聯合只在一個表中獲得所有的字段。

+0

你能告訴我們一些代碼?這使得它更容易幫助。 – Alex 2012-04-02 06:38:57

回答

2

您應該能夠通過將connection.Query擴展方法傳遞給適當的參數化SQL語句並將其作爲Type參數傳遞給對象來實現此目的。

Dapper然後會奇蹟般地將查詢映射到對象,假設您在選擇列表中適當地使用別名(即,將它們與對象的相應屬性名稱別名)。

東西沿着這些路線應該工作:

public class SomeObject 
{ 
    public int Field1 {get; set;} 
    public int Field2 {get; set;} 
    public int A {get; set;} 
    public int B {get; set;} 
    public int C {get; set;} 
    public int D {get; set;} 
} 

using(var connection = SomeConnectionFactory.GetConnection()) 
{ 
    var yourObject = 
     connection.Query<SomeObject>("select tab1.someThing as Field1, " + 
            "tab2.someThing as Field2, " + 
            "tab4.onePotato as A, " + 
            "tab4.twoPotato as B, " + 
            "tab4.threePotato as C, " + 
            "tab4.four as D " + 
            "from someTable tab1 " + 
            "join someTable2 tab2 on tab1.Id = tab2.Id " + 
            "$$ etc etc for the other joins $$" + 
            "where tab1.Id = :ID " + ,new {ID = someId}); 
}; 

注意的一點是我使用綁定變量語法Oracle數據庫(:)。您需要將其替換爲數據庫的等效項。

希望這是有益的。