1 回答

TA貢獻2016條經驗 獲得超9個贊
我想您有一個 Expenses 表,其與 PaymentModes 和 Category 表的關系為 1:1。在這種情況下,您的 sp 應該返回 Expenses 表中的所有記錄,其中首先列出 Expenses 字段,然后是 PaymentModes 字段,最后是 Category 字段。像這樣的東西
select e.*, p.PaymentModeId, p.PaymentMode, c.CategoryID, c.CategoryName
from tbl_Expenses e inner join PaymentModes p on e.PaymentModeID = p.PaymentModeID
inner join Category c on e.CategoryID = c.CategoryID
where ......
如果您與 PaymentModes 和 Category 表沒有關系,但所有內容都存儲在單個 Expenses 表中,那么您不需要聯接,只需按正確順序列出所有字段,以便 Dapper 知道如何使用您的字段填充所需的對象
select ExpenseID, Price, ExpenseDate, .....,
PaymentModeID, PaymentMode,
CategoryID, CategoryName
from tbl_Expenses
where ....
在任何情況下,您都可以使用
var result = db.Query<Expenses, PaymentModes, Category, Expenses>("sp_Summary",
(e,p,c) =>
{
e.PaymentModes = p;
e.Category = c;
return e;
}, splitOn: "PaymentModeID,CategoryID", param: param, commandType: CommandType.StoredProcedure);
此時,結果變量是IEnumerable<Expense>具有正確PaymentModes和Category集的 a。
該splitOn參數允許小巧玲瓏知道哪個領域應該由調用查詢方法所需的三個對象分開你的結果數據。
因此,直到 PaymentModeID 的所有字段都分配給 Expenses 變量,然后直到 CategoryID 的字段轉到 PaymentModes 變量,而 Category 變量的最后一個字段傳遞給 lambda 表達式。
在 lambda 中,您只需將p和c變量分配給Expenses 變量的適當字段并滿足返回 Expenses 變量的 Func 簽名
- 1 回答
- 0 關注
- 205 瀏覽
添加回答
舉報