如何从实体框架连接表中获取数据?

时间:2013-09-09 06:05:21

标签: c# asp.net entity-framework

我正在使用entity frame work。我使用3个表创建一个函数。

这是我的代码:

public static IQueryable GetMenuContent()
{            
    string roleName ="ADMIN"

    var query1 = from ua in db.USER_ACCESS
                 join p in db.PAGES on ua.PAGE_ID equals p.PAGE_ID
                 join r in db.ROLES on ua.ROLE_ID equals r.RoleId
                 where (r.RoleName == roleName)
                 select new
                 {
                     tuserAccess = ua,
                     tpage = p,
                     trole = r,
                 };            

    return query1;
}

因此,在我的母版页中,我需要查看USER_ACCESS表 - > PAGE_NAME

所以我试试这个

@foreach (var item in pro.Models.SiteContentModel.GetMenuContent())
{
      switch (((DAL.PAGES)(item)).PAGE_NAME)
      {
           case "details":
                if (((DAL.USER_ACCESS)(item)).ACC_STATUS == true)
                {
                     <li>@Html.ActionLink("details", "Index", "Business")</li>
                }
                break;                
       }
}

但它不起作用.. 我怎么能这样做..

2 个答案:

答案 0 :(得分:0)

在您的情况下,您应该使用导航属性而不是连接。

但在你的情况下,你应该改写你的foreach:

@foreach (var item in pro.Models.SiteContentModel.GetMenuContent())
{
      switch (item.tpage.PAGE_NAME)
      {
           case "details":
                if (item.tuserAccess.ACC_STATUS == true)
                {
                     <li>@Html.ActionLink("details", "Index", "Business")</li>
                }
                break;                
       }
}

答案 1 :(得分:0)

尝试修改方法如下。 你匿名的objcet的财产变更了。

(适用(DAL.t_PAGES)(项))。tpage.PAGE_NAME ((DAL.USER_ACCESS)(项))。tuserAccess.ACC_STATUS

@foreach (var item in pro.Models.SiteContentModel.GetMenuContent())
{
      switch (((DAL.t_PAGES)(item)).tpage.PAGE_NAME)
      {
           case "details":
                if (((DAL.USER_ACCESS)(item)).tuserAccess.ACC_STATUS == true)
                {
                     <li>@Html.ActionLink("details", "Index", "Business")</li>
                }
                break;                
       }
}