Как использовать automapper в щеголеватый интерфейс (IDbConnection) с SQL запросов
public IEnumerable<voucher> index(string word, string DivisionCode, string yearlabel, int pageno)
{
using (IDbConnection dbConnection = Connection)
{
var data = dbConnection.Query<fydates>(@"SELECT REPLACE(CONVERT(NVARCHAR(10),fystart,6),' ','-') as fystart,
REPLACE(CONVERT(NVARCHAR(10),fyend,6),' ','-') as fyend FROM fydates WHERE yearlabel = @yearlabel",
new { yearlabel = yearlabel }).Single();
List<voucher> DataQuery = dbConnection.Query<voucher, accounts, division, LockStatus, voucher>(@"SELECT V.id,V.voucherno,
CASE WHEN V.vouchertype='P' THEN 'Paid' ELSE 'Receipt' END AS vouchertype,
REPLACE(CONVERT(NVARCHAR(10),V.dated,6),' ','-') AS dated,V.subno,V.amount,COALESCE(V.syscreated,' ') AS syscreated,V.bankcode,
COALESCE(V.cheqno,' ') AS Cheqno,V.Cheqdate,V.posted,V.currency,A.id as accountsid,A.achead,A.shortname,
D.id as divisionid,D.divname,D.divncode,L.id as lockstatusid,L.name FROM voucher V
LEFT JOIN Accounts A ON V.bankcode = A.mainac
LEFT JOIN divisionmst D ON V.divisionid = D.divncode
LEFT JOIN LockStatus L ON V.posted=L.Type
WHERE (V.voucherno + V.Subno+V.cheqno + A.achead + LEFT(yearvoucherno,3) LIKE @word AND
D.divncode LIKE @DivisionCode) AND (dated BETWEEN @fystart AND @fyend OR dated='31-Mar-49')
Order By V.id DESC OFFSET @pageno *25 ROWS FETCH NEXT 25 ROWS only",
(voucher, accounts, division, LockStatus) =>
{
voucher.accounts = accounts;
voucher.division = division;
voucher.LockStatus = LockStatus;
return voucher;
},
new { word = word, fystart = data.fystart, fyend = data.fyend, DivisionCode = DivisionCode, pageno = pageno - 1 },
splitOn: "accountsid, divisionid, lockstatusid").ToList();
return DataQuery;
}
}
В предыдущем сценарии, я использовал метод отображения с использованием spliton в JOINS запросов, он отлично работал. Но в случае союзных запросов или случая, когда условия я застрял, поскольку я не могу решить, где я должен делить. Как и в приведенном выше описании, следует упомянуть объединение и случай, когда условие i не может решить, где делиться.