我有一個問題,關於從asp/mvc中的2個存儲庫中組合數據。如何組合來自2個存儲庫的數據
我有2個存儲庫,例如UserRepo和InvoiceRepo。
現在我想創建一個包含用戶數據和發票數據 查詢(例如:與地址和數據的所有用戶的最後一個發票)。
這樣做的最佳方式是什麼?
我有一個問題,關於從asp/mvc中的2個存儲庫中組合數據。如何組合來自2個存儲庫的數據
我有2個存儲庫,例如UserRepo和InvoiceRepo。
現在我想創建一個包含用戶數據和發票數據 查詢(例如:與地址和數據的所有用戶的最後一個發票)。
這樣做的最佳方式是什麼?
你爲什麼要用一個電話來做?
var users = userRepos.GetUsers();
var lastInvoices = invoiceRepos.GetLastInvoiceForAllUsers();
var usersWithInvoices = (from x in users
select new UserWithInvoice(x, lastInvoices.First(inv => inv.userId = x.Id);
這將是兩個SELECT並且更容易理解。
您可以使用執行連接並返回所需數據的方法來擴展現有存儲庫(可能爲InvoiceRepo
)。
InvoiceRepo.GetUserInvoices(userId)
聽起來像是一個明智的選擇。
這是存儲庫模式的常見問題 - 爲您的方法找到適當的回購。
請注意,這可能是從數據庫加載整個表,具體取決於實施。如果需要分頁將會非常棘手(雖然沒有提及) –
如果需要分頁,只需將'int [] userId'傳遞給'GetLastInvoiceForUsers' – jgauffin