Sql server 使用自定义SQL查询显示视图

Sql server 使用自定义SQL查询显示视图,sql-server,asp.net-mvc,web-applications,Sql Server,Asp.net Mvc,Web Applications,所以我对MVC和SQL还是新手。 我试图做的是在电影(即localhost/Movies/)的索引视图上显示员工的姓名(Employee.name),而不是他们的ID(MovieEmployees.ID) 我将我的数据库导入到SQL Express中,为电影制作了模型,然后为视图自动生成控制器,该视图创建了一个(创建、删除、详细信息、编辑和索引视图) 这是我当前的MovieController索引 // GET: /Movies/ public ActionResult Index()

所以我对MVC和SQL还是新手。 我试图做的是在电影(即localhost/Movies/)的索引视图上显示员工的姓名(Employee.name),而不是他们的ID(MovieEmployees.ID)

我将我的数据库导入到SQL Express中,为电影制作了模型,然后为视图自动生成控制器,该视图创建了一个(创建、删除、详细信息、编辑和索引视图)

这是我当前的MovieController索引

 // GET: /Movies/
    public ActionResult Index()
    {
         return View(db.Movies.ToList());
    }
这是Index.cshtml

@model IEnumerable<WebApplication2.Entities.Movie>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.movieEmployeeID)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.showID)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.movieEmployeeID)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.showID)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
            @Html.ActionLink("Details", "Details", new { id=item.ID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.ID })
        </td>
    </tr>
}

</table>
@model IEnumerable
@{
ViewBag.Title=“Index”;
}
指数

@ActionLink(“新建”、“创建”)

@DisplayNameFor(model=>model.movieEmployeeID) @DisplayNameFor(model=>model.showID) @foreach(模型中的var项目){ @DisplayFor(modelItem=>item.movieEmployeeID) @DisplayFor(modelItem=>item.showID) @ActionLink(“编辑”,“编辑”,新的{id=item.id})| @ActionLink(“详细信息”,“详细信息”,新的{id=item.id})| @ActionLink(“删除”,“删除”,新的{id=item.id}) }
下面是现在显示的内容

我想要的是显示实际姓名,而不是电影员工的ID

我如何正确实现这一点,以便索引显示员工的姓名而不是ID?

这是我的数据库关系图,显示了我的电影数据库中的Employee.Name和MovieEmployees.ID


非常感谢

为过早意外点击保存而道歉

创建一个ViewModel,如下所示:

 public class MovieViewModel
 {
      public int MovieId{get;set;} 
      public int ShowId{get;set;}
      public string EmployeeName{get;set;}
 }
然后在控制器中

 // GET: /Movies/
 public ActionResult Index()
 {
     // the query can be better than this but just to get you started
     // you can also do db.MovieEmployees.Where and pass a predicate to filter results

     var model = db.MovieEmployees.Select(m=>new MovieViewModel{
                                    MovieId = m.Movie.ID,  
                                    ShowId= m.Movie.ShowId,
                                    EmployeeName = m.Employee.Name
                                  });

     return View(model);
 }
然后视图将是(尽量保持简单)

@model IEnumerable
@{
ViewBag.Title=“Index”;
}
指数

@ActionLink(“新建”、“创建”)

员工姓名 显示ID @foreach(模型中的var项目) { @DisplayFor(modelItem=>item.EmployeeName) @DisplayFor(modelItem=>item.ShowID) @ActionLink(“编辑”,“编辑”,新的{id=item.MovieId})| @ActionLink(“详细信息”,“详细信息”,新的{id=item.MovieId})| @ActionLink(“删除”,“删除”,新的{id=item.MovieId}) }

因此,您正在向视图发送viewModel所需的属性,而不发送其他属性。您可以从和了解有关MVC的更多信息。罗布·科纳利、斯科特·汉塞尔曼、乔恩·加洛韦、菲尔·哈克、斯科特·古思里、布拉德·威尔逊和其他人在MVC上提供了大量资料。

您能告诉我们您的模型在哪里推广吗?此外,我建议您查看viewmodels,而不是在视图中强键入实体。您好!“填充”是指数据来自何处?如果是,则已预先输入。我是MVC的新手,所以我现在在一家公司实习,他们希望我能在各种各样的事情上进行练习。我首先从代码开始,然后是MVC,然后是SQL,现在我正在使用我用MVC创建的SQL数据库。所以一切都是预先准备好的,我把这个数据模型添加到这个MVC中。这有用吗?如果没有,请指导我你需要我做什么,非常感谢!我明白了,在这种情况下,我建议您从一个空的MVC项目开始,然后观看/阅读一些教程,以便更好地了解.NETMVC的工作原理。然后你可以做任何你想做的事情,因为你将编写代码而不是使用自动生成的代码:)哦,那么我可能应该删除自动生成的东西,编写我自己的索引之类的?我相信这也是我正在建立的东西,我只是害怕在这么早的时候就开始深入这个问题。我已经涉猎MVC大约40个小时了,但对我来说,这似乎还是很多。我只是建议从一张白板开始将是一个很好的学习过程,因为你必须写出所有的代码,这将有助于你在编写过程中了解你在写什么以及为什么要写。
  @model IEnumerable<MovieViewModel>
  @{
      ViewBag.Title = "Index";
  }
 <h2>Index</h2>
 <p>
     @Html.ActionLink("Create New", "Create")
 </p>
 <table class="table">
    <tr>
       <th>
           Employee Name
       </th>
       <th>
           Show ID
       </th>
       <th></th>
    </tr>
  @foreach (var item in Model) 
  {
    <tr>
      <td>
          @Html.DisplayFor(modelItem => item.EmployeeName)
      </td>
      <td>
          @Html.DisplayFor(modelItem => item.ShowID)
      </td>
      <td>
          @Html.ActionLink("Edit", "Edit", new { id=item.MovieId }) |
          @Html.ActionLink("Details", "Details", new { id=item.MovieId }) |
          @Html.ActionLink("Delete", "Delete", new { id=item.MovieId })
      </td>
   </tr>
  }
  </table>