2014-04-24 42 views
1

我是實體框架的新手。如何使用實體框架查詢列表

我正在使用實體框架Code First,並創建了4個類。

的模式是:

  • 許多用戶< - >許多角色
  • 一個用戶< - >很多帖子
  • 許多後< - >許多標籤

我有一個Admin的區域,以及一個名爲UsersController的控制器,並帶有返回視圖的ActionResult。

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

我從ViewModels創建了一個強類型的視圖。在我的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> 

但在我的控制,如何我可以從我的數據庫中抓取用戶,將我的viewmodels傳遞到我的視圖中嗎?

+0

這取決於如何你的DbContext類被稱爲在你的控制器文件夾,然後新的控制器,只需右鍵點擊,並使用entitframework模板,它會問你爲你的DbContext類(就是那個有你的數據集的一個)對於這種情況下的用戶模型,請參閱該代碼 –

回答

2

您需要使用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(); 
    } 
} 
0

一種方法將依賴於從控制器調用到存儲庫或datacontext或某種datahelper類的調用。

在那裏,你可能會有諸如

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

和Controller

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