如何使用存储库模式的预先加载?

时间:2016-06-30 14:34:40

标签: c# asp.net-mvc repository-pattern eager-loading

我试图清理我在应用程序中访问数据的方式。我已经开始转向存储库模式,我遇到的第一个问题之一是访问我的相关数据。

经过一些研究后,我发现你可以使用.Include()访问相关数据,但我似乎无法让它工作,也不确定我设置的方式是否正确。

如何在存储库模式中使用预先加载?我已经包含了我的代码,以向您展示我如何设置的路线图。我省略了某些项目以保持简洁和简单。

IRepository.cs

    TypeError: non-boolean (DataArrays.NAtype) used in boolean context
 in create_lineups at C:\Users\Jake\Documents\GitHub\MLB_DFS_ALGO.jl:176
 in include_string at loading.jl:288
 in eval at C:\Users\Jake\.julia\v0.4\Atom\src\Atom.jl:3
 [inlined code] from C:\Users\Jake\.julia\v0.4\Atom\src\eval.jl:39
 in anonymous at C:\Users\Jake\.julia\v0.4\Atom\src\eval.jl:108
 in withpath at C:\Users\Jake\.julia\v0.4\Requires\src\require.jl:37
 in withpath at C:\Users\Jake\.julia\v0.4\Atom\src\eval.jl:53
 [inlined code] from C:\Users\Jake\.julia\v0.4\Atom\src\eval.jl:107
 in anonymous at task.jl:58

CustomerRepository.cs 在这里,我通过指定.Include然后定义相关表来添加了预先加载。

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

CustomerController.cs 我认为在这个级别,GetRelatedData将使用CustomerRepository.cs中定义的include

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

索引视图 我现在需要显示数据,但由于我不确定如何在我的视图中显示相关数据,因此我陷入了困境。

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

可能是我的方法不正确我已经从ASP.NET MVC教程中获得了指导,但是我无法理解如何使这个热切的加载方案在存储库模式中工作。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您应该在客户对象中拥有客户车辆集合。

这样的事情:

@foreach (var item in Model) {
<tr>
   @foreach(var car in item.customer_cars){
  <td>
     @Html.DisplayFor(car => car.model)
  </td>       
 }
</tr>
}