2017-09-22 1 views
-2

モデルが複数あり、コントローラクラス内のフラットテーブルにこれらのテーブルを結合している場合、ビューをフラットテーブルにアクセスするにはどのようにすればよいですか?MVCでフラットテーブルを使用する

たとえば、モデル(顧客、注文、請求書)に3つのテーブルがあるとします。 注文は外部キー(CustomerID)によって顧客にリンクされ、請求書は外部キー(OrderID)によって注文にリンクされます。

このすべてを1つのフラットテーブルで表示するには(すべての顧客がリストされていますが、注文がなくてもリストに表示されていても、請求書がない場合でも)、次の匿名タイプ:

var FlatTable = (from a in customers 
let CustomerID = a.ID 
join b in orders on a.ID equals b.CustomerID into ab 
from b in ab.DefaultIfEmpty() 
let OrderID = b.ID 
join c in invoices on b.ID equals c.InvoiceID into ac 
from c in ac.DefaultIfEmpty() 
let InvoiceID = c.ID 
select new {a.CustomerName, CustomerID, OrderID, b.ProductDescription, InvoiceID, c.InvoiceAmount}); 

return View(FlatTable.ToList()); 

私のビュー(私のモデルに基づいています)では、どのようにしてFlatTableにアクセスできますか。

+0

私はそれを理解したと思います。私は一般的なViewModelクラスを作成してから、私の匿名型をViewModelクラスのIEnumerableにキャストしなければなりませんでした。 – William

答えて

0
IList<ViewModel> model = (from a in customers 
join b in orders on a.ID equals b.CustomerID into ab 
from b in ab.DefaultIfEmpty() 
join c in invoices on b.ID equals c.InvoiceID into ac 
from c in ac.DefaultIfEmpty() 
select new ViewModel() {CustomerName = a.CustomerName, CustomerID = a.ID, OrderID = b.ID, ProductDescription = b.ProductDescription, InvoiceID = c.ID, InvoiceMaount = c.InvoiceAmount}).ToList(); 
関連する問題