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

解决方案 »

  1.   

    那要自己做个视图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
                };
      

  2.   

    哪这样,不是和用ado的方式一样吗.EF的优势一点也没有发挥出来啊
      

  3.   

    首先需要在模型里面建立外键关系,然后自己写POCO实体,最后DBContext也需要自己写。
    (EF4.1 有生成POCO的模板,具体没用过)查询时:dbContext.school.Include("student");
      

  4.   

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

  5.   

    var all =  from sl in  school 
          jion st   in  student  on sl.id equals st.id
            select new Temp{
          //里面的自定义      }.tolist();
     return View(all);
      

  6.   


    按这个方法,我前台的model不是也得自己再写吗.
      

  7.   

    你可以把匿名类型转换成dataTable 在前台用dataTable输出
      

  8.   

    前台和asp.net的datatable一样调用
      

  9.   

    关键就是前台如何调用啊.
    我在controller层里,
    return view(dt);
    我在view层怎么显示啊.
    fearch(datarow r in dt)
    这样,根本就不认啊
      

  10.   


                var q = from a in db.Product
                        from b in db.ProductCategories
                        where a.CategoryID == b.CategoryID
                        select new
                        {
                            ID = a.ProductID,
                            Name = a.ProductName,
                            ClassName = b.CategoryName
                        };
                DataTable dt = ConvertToDataTable(q.OrderByDescending(a => a.ID).Take(10).ToList());
                return View(dt);
    @model System.Data.DataTable
    @{
        ViewBag.Title = "List";
    }
    @foreach (System.Data.DataRow dr in Model.Rows)
    {
        @(dr["Name"])@(dr["ClassName"])
    }
      

  11.   

    数据库里建关系了没,school跟student建好关系,生成的Model也是有关系的