首页 新闻 会员 周边

Mvc架构中,多表联合查询

0
悬赏园豆:10 [已解决问题] 解决于 2013-08-28 19:40

Mvc架构中,怎样多表联合查询.

Controller 查到返回到View,View中怎么显示?

paperplans的主页 paperplans | 初学一级 | 园豆:157
提问于:2013-08-21 14:33
< >
分享
最佳答案
1

最简单的,在数据库生成视图,然后再 EF 中生成此视图的模型类,这样就和查询单表一样了。

收获园豆:10
Launcher | 高人七级 |园豆:45045 | 2013-08-21 14:40
其他回答(4)
0

多表联合查询这个问题其实解决方法有很多,MVC并不一定非要用LINQ啊等等这种查询方式,也可以用原生态的sql进行查询。

多表查询时返回的结果要想返回在一个Model里,这个Model肯定是复杂类型的,将返回的值绑定在这个Model上,然后返回到View上,在View取出来显示就行了

缘来小詹 | 园豆:202 (菜鸟二级) | 2013-08-21 14:47
2

上代码来的直接:

在Controller里可以这么写(注意这里并没有将DepartUser转化成一个实实在在的对象,所以在view里是没有只能提示的。):

            var DepartUser = from uu in db.T_USER_USER
                             join ud in db.T_USER_USERDEPARTMENT on uu.C_USERID equals ud.C_USERID
                             where .......
                             select new
                             {
                                 Id = uu.C_USERID,
                                 Name = uu.C_REALNAME
                             };
            return View(DepartUser);

 

 

在view里面,可以这样写:

@foreach(var du in Model){

du.Id,du.Name<br/>

}

应该行的通。

jone_e | 园豆:1410 (小虾三级) | 2013-08-21 16:07

这种方法不行,我试了,说找不到。

支持(0) 反对(0) KMSFan | 园豆:108 (初学一级) | 2015-01-06 16:16

@KMSFan: 


ViewBag.A = (from end in Context.User.Include("Role").Include("member")
where userName != null ? end.userName.Contains(userName) : true//使用imclude将USER类中的导航属性加载出来
select new Usermanage()
{
id = end.userId,
userName = end.userName,
roleName = end.Role.roleName,
userName1 = end.userName,
memberName = end.member.memberName,
memberTime = end.memberTime,
zhuangtai = end.zhuangtai
}).ToList();
return View("Index");

数据库的关系设置好

支持(1) 反对(0) 良辰在此 | 园豆:200 (初学一级) | 2015-11-01 08:50
0

生成视图!

夏夏知 | 园豆:233 (菜鸟二级) | 2013-08-23 09:31
0

定义一个viewModel,通过Linq生成新类,视图可调用!

class a

{public int ID{get;set;}

public string aTitle{get;set;}

}

class b

{

public int bid{get;set;}

public string Bname{get;set;}

}

class viewab

{

public string atitle{get;set;}

public string Bname{get;set;}

}

在控制器中:var list=from a in db.a from b in db.b where a.id==b.bid

 select new viewab{atitle=a.aTitle,Bname=b.Bname}

return view(list.ToList());

建强视图viewab

foreac(m in viewab)

{

.....}

westcars | 园豆:202 (菜鸟二级) | 2016-01-20 10:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册