我有一個關於Dapper的快速問題。我有一個返回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均為空。
我不想使用Union來將所有Fields都放在一個表中。
您應該能夠通過將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數據庫(:)。您需要將其替換為數據庫的等效項。
希望這很有用。