Asp.net mvc 如何使用EF6访问三层MVC5应用程序中的数据

Asp.net mvc 如何使用EF6访问三层MVC5应用程序中的数据,asp.net-mvc,entity-framework,asp.net-mvc-5,Asp.net Mvc,Entity Framework,Asp.net Mvc 5,我已经创建了使用EF6的MVC5三层应用程序。我将应用程序分为BL(业务层)、DL(数据层)和表示层。我可以成功地实现BL和DL。但是,我无法从BL检索数据并将其显示在视图上 以下是我试图做的: //on the controller public ActionResult Index() { TrackerBL t = new TrackerBL(); //BL var model = t.GetApps(); //method on my BL that returns

我已经创建了使用EF6的MVC5三层应用程序。我将应用程序分为BL(业务层)、DL(数据层)和表示层。我可以成功地实现BL和DL。但是,我无法从BL检索数据并将其显示在视图上

以下是我试图做的:

//on the controller    
public ActionResult Index()
{
   TrackerBL t = new TrackerBL(); //BL
   var model = t.GetApps(); //method on my BL that returns a list
   return View(model);
}
下面是我在视图上尝试的内容

@model List<AppTracker.Models.Apps>
@{
    ViewBag.Title = "Index";
}

<h2>App Tracker</h2>
@foreach(var m in Model)
{
<div>m.Name</div>
}
@型号列表
@{
ViewBag.Title=“Index”;
}
应用程序跟踪器
@foreach(模型中的var m)
{
m、 名字
}
但是,它会引发以下异常:

传递到字典中的模型项的类型为“System.Collections.Generic.List
1[AppTracker.BL.AppData]”,但此字典需要类型为“System.Collections.Generic.List
1[AppTracker.Models.Apps]”的模型项

我在哪里迷路了?

您将
列表
从控制器传递到视图,但视图中的模型(您要显示)不同(
列表
)。这就是问题所在


您只能在从控制器传递的视图中显示模型。

因此,将错误的模型传递到视图或在视图中引用错误的模型

传递到字典的模型项的类型为“System.Collections.Generic.List1[AppTracker.BL.AppData]”,但此字典需要类型为“System.Collections.Generic.List1[AppTracker.Models.AppData]”的模型项

该消息表示您已将下面的消息传递给视图

System.Collections.Generic.List1[AppTracker.BL.AppData]

但是,如代码所示,视图需要

System.Collections.Generic.List1[AppTracker.Models.Apps]

谢谢


p、 t.GetApps()的返回类型是什么?它是我创建的一些属性类:公共类AppData{public int Id{get;set;}public string Name{get;set;}}要在视图中显示的模型与索引操作中的模型不同。如果将视图的“模型”更改为@@model List,它将起作用