日期:2014-05-18  浏览次数:20432 次

问一个比较弱的关于asp.net MVC + EF的问题
在使用asp.net MVC 中使用EF做数据操作,EF生成的model全是单表,可是我的查询一般都是多表查询.这样在前台生成的时候,没法用一个表来表示啊.这怎么处理啊.
比如说,我有二个表,一个表school 一个表student我要二个表连查,
得到的结果是学校名,学生名
可是在前台list的时候,model只能是school或student没法子二个表合一起啊.
以前用ado.net时model层是自己生成的.所以一些字段可以合在一个model里
不知道我的表述清楚不.

------解决方案--------------------
那要自己做个视图mode 把你要的属性弄进去
public class School{
public int id{get;set;}
public string name{get;set;}

public class Stu{
public int id{get;set;}
public string name{get;set;}
public int schid{get;set;}
}

public class ViewModel{
public string scName{get;set;}
public string strName{get;set;}
}

var q = from a in db.Student
from b in db.school
where a.schid == b.id
select new ViewModel{
scName = a.name,
strName = b.name
};
------解决方案--------------------
首先需要在模型里面建立外键关系,然后自己写POCO实体,最后DBContext也需要自己写。
(EF4.1 有生成POCO的模板,具体没用过)

查询时:dbContext.school.Include("student");
------解决方案--------------------
你可以写一个存储过程,在EF中导入存储过程后,通过EF自动生成复杂对象(即school和student的结合),然后调用EF自动生成的方法返回List对象,在页面直接绑定就可以了.

------解决方案--------------------
var all = from sl in school 
jion st in student on sl.id equals st.id
select new Temp{
//里面的自定义

}.tolist();
 return View(all);