[英]Deep loading data with EF6 and LINQ
我正在使用ASP.NET Identity 2和Troy Goode的PagedList實現ASP.NET MVC 5 Web應用程序。 我需要在JqGrid中以以下格式顯示UserRole數據:
用戶名| 角色名稱
這是我的UserRole類:
public class UserRole : Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole<int>
{
[ForeignKey("UserId")]
public virtual User User { get; set; }
[ForeignKey("RoleId")]
public virtual Role Role { get; set; }
}
這是我的存儲庫方法
public virtual IQueryable<UserRole> GetAsQueryable(Expression<Func<UserRole, bool>> where)
{
return _dataContext.UserRoles.Where(where).AsQueryable();
}
這是我的Controller方法(GetAsPagedList方法只是對輸入列表進行排序,將PagedList的.ToPagedList方法應用於它,並返回它的一個子集):
public ActionResult GridData(MvcJqGrid.GridSettings gridSettings)
{
IQueryable<UserRole> items = _repository.GetAsQueryable();
IPagedList<T> pagedOrderedItems = PagingHelper<UserRole>.GetAsPagedList(
items,
gridSettings.SortOrder, gridSettings.SortColumn,
gridSettings.PageIndex, gridSettings.PageSize);
var jsonData = new
{
total = pagedOrderedItems.TotalItemCount / gridSettings.PageSize + 1,
page = gridSettings.PageIndex,
records = pagedOrderedItems.TotalItemCount,
rows = (
from c in pagedOrderedItems
select new
{
id = c.UserId + '-' + c.RoleId,
cell = new[]
{
"Edit",
"Details",
// TODO: something like this:
// [UserName] = c.User.UserName
// [RoleName] = c.Role.Name
c.Role.Name
}
}).ToArray()
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
}
我不知道應該在哪里以及如何將通過外鍵鏈接到我的表(IE Users.UserName和Roles.Name)的表中的數據深度加載-您能幫忙嗎?
_dataContext.UserRoles.Include("Role").Include("User").Where(where).AsQueryable();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.