1

我有一個問題,關於從asp/mvc中的2個存儲庫中組合數據。如何組合來自2個存儲庫的數據

我有2個存儲庫,例如UserRepo和InvoiceRepo。

現在我想創建一個包含用戶數據和發票數據 查詢(例如:與地址和數據的所有用戶的最後一個發票)。

這樣做的最佳方式是什麼?

回答

0

你爲什麼要用一個電話來做?

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並且更容易理解。

+0

請注意,這可能是從數據庫加載整個表,具體取決於實施。如果需要分頁將會非常棘手(雖然沒有提及) –

+0

如果需要分頁,只需將'int [] userId'傳遞給'GetLastInvoiceForUsers' – jgauffin

1

您可以使用執行連接並返回所需數據的方法來擴展現有存儲庫(可能爲InvoiceRepo)。

InvoiceRepo.GetUserInvoices(userId)聽起來像是一個明智的選擇。

這是存儲庫模式的常見問題 - 爲您的方法找到適當的回購。

相關問題