最简单的,在数据库生成视图,然后再 EF 中生成此视图的模型类,这样就和查询单表一样了。
多表联合查询这个问题其实解决方法有很多,MVC并不一定非要用LINQ啊等等这种查询方式,也可以用原生态的sql进行查询。
多表查询时返回的结果要想返回在一个Model里,这个Model肯定是复杂类型的,将返回的值绑定在这个Model上,然后返回到View上,在View取出来显示就行了
上代码来的直接:
在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/>
}
应该行的通。
这种方法不行,我试了,说找不到。
@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");
数据库的关系设置好
生成视图!
定义一个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)
{
.....}