繁体   English   中英

如何使用实体框架查询列表

[英]How to query list using Entity framework

我是实体框架的新手。

我正在使用实体框架Code First,并创建了4个类。

该架构为:

  • 许多用户<->许多角色
  • 一位用户<->许多帖子
  • 许多帖子<->许多标签

我有一个Admin区域,一个名为UsersController的控制器,带有一个返回视图的ActionResult。

public ActionResult Index()
{
   return View();
}

我从ViewModels创建了一个强类型的视图。 在我的视图模型中,我创建了一个带有以下内容的类:

public class UsersIndex 
{
   public IEnumerable<User> Users { get; set; }
}

对于我的视图,我看过一些代码示例,其中的视图可以有一个foreach循环:

@MyBlog.Areas.Admin.ViewModel
<tbody>
    @foreach (var user in Model.Users)
    {
        <tr>
            <td>@user.Id</td>
            <td>@user.Username</td>
            <td>@user.Email</td>
        </tr>
    }
</tbody>

但是在我的控制器中,我如何从数据库中获取用户以将其视图模型传递到视图中?

您需要使用EF上下文对视图模型进行水合处理。

public ActionResult Index()
{
    var model =
        new UsersIndex
        {
            Users = GetUsers()
        };

   return View(model);
}

private IEnumerable<User> GetUsers()
{
    using(var context = new CustomContext())
    {
        return context.Users.ToList();
    }
}

或者,如果您更喜欢查询语法。

private IEnumerable<User> GetUsers()
{
    using(var context = new CustomContext())
    {
        return (from user in context.Users
                select user).ToList();
    }
}

一种方法将依赖于从控制器到存储库或数据上下文或某种datahelper类的调用。

在那儿,你可能会喜欢

public IEnumerable<User> UserReadAll()
{
 using (myEntities _db = new myEntities)
   { 
       return _db.Users.ToList();
   }
}

并在控制器中

Public ActionResult MyPage()
{
     var myUserList = MyHelper.UserReadAll();
     return View(myUserList);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM