2016-06-30 12 views
3

私は自分のアプリケーション内で自分のデータにアクセスする方法をクリーンアップしようとしています。私はレポジトリパターンに移行し始めました。遭遇した最初の問題の1つは、関連するデータにアクセスすることでした。リポジトリパターンにeager loadingを使用するにはどうすればよいですか?

調査の結果、関連するデータにアクセスするためにインクルード()を使用できることがわかりましたが、動作させることができず、設定した方法が正しいとは確信していません。

リポジトリパターン内でeager loadingを使用するにはどうすればよいですか?私は自分のコードを含め、私が物事をどのように設定しているかのロードマップを表示しました。私は物事を短く単純に保つために特定の項目を省略しました。

IRepository.csここ

public interface ICustomerRepository : IDisposable 
{ 
    IEnumerable<customer> GetRelatedData();   
} 

CustomerRepository.cs Iは.INCLUDEを指定した後、関連するテーブルを定義することにより、積極的なロードを追加しました。

public IEnumerable<customer> GetRelatedData() 
{ 
    return context.customers 
     .Include(x => x.customer_cars) 
     .ToList(); 
} 

CustomerController.cs 私はGetRelatedDataがCustomerRepository.cs

public ActionResult Index() 
{ 
    var customers = customersRepository.GetRelatedData(); 
    return View(customers); 
} 

に私が今表示する必要がインデックスビュー を定義したとして含めるを利用するでしょう。このレベルで考えました私の見解に関連するデータをどのように表示するのか分からないので、この段階ではデータが残っています。

@model IEnumerable<Titan.Models.customer> 
@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

<p> 
    @Html.ActionLink("Create New", "Create") 
</p> 
<table class="table"> 
    <tr> 
     <th> 
      @Html.DisplayNameFor(model => model.first_name) 
     </th>  
    </tr> 
@foreach (var item in Model) { 
<tr> 

    <td> 
     @Html.DisplayFor(modelItem => item.first_name) 
    </td>  
</tr> 
} 

</table> 

それは私のアプローチは、私はASP.NET MVCのチュートリアルから指導を撮影したが、私は、私は、リポジトリのパターンで、このイーガーローディングシナリオ作業を行うことができますどのようにまわりで私の頭を取得することはできません間違っていることが考えられます。どんな助けもありがとうございます。

+1

:このような

何か。子のcustomer_carsオブジェクトへのアクセス方法を尋ねていますか? –

+0

私は本当に2つのことを尋ねています。a)私のアプローチは、リポジトリパターン内の熱心な読み込みを使用して関連するデータを取得するのは正しいですか? b)もしそうなら、私はこの関連データを表示できるように、 'customers_car'オブジェクトを私の視野に入れるにはどうしますか? – Yanayaya

+0

"お客様"クラスのコードを投稿してください –

答えて

0

顧客オブジェクトに顧客の車のコレクションが必要です。私はこれを2回再読んで、私はまだあなたが求めているものかどうか分からない

@foreach (var item in Model) { 
<tr> 
    @foreach(var car in item.customer_cars){ 
    <td> 
    @Html.DisplayFor(car => car.model) 
    </td>  
} 
</tr> 
} 
関連する問題