在使用asp.net MVC 中使用EF做数据操作,EF生成的model全是单表,可是我的查询一般都是多表查询.这样在前台生成的时候,没法用一个表来表示啊.这怎么处理啊.
比如说,我有二个表,一个表school 一个表student我要二个表连查,
得到的结果是学校名,学生名
可是在前台list的时候,model只能是school或student没法子二个表合一起啊.
以前用ado.net时model层是自己生成的.所以一些字段可以合在一个model里
不知道我的表述清楚不.
比如说,我有二个表,一个表school 一个表student我要二个表连查,
得到的结果是学校名,学生名
可是在前台list的时候,model只能是school或student没法子二个表合一起啊.
以前用ado.net时model层是自己生成的.所以一些字段可以合在一个model里
不知道我的表述清楚不.
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
};
(EF4.1 有生成POCO的模板,具体没用过)查询时:dbContext.school.Include("student");
jion st in student on sl.id equals st.id
select new Temp{
//里面的自定义 }.tolist();
return View(all);
按这个方法,我前台的model不是也得自己再写吗.
我在controller层里,
return view(dt);
我在view层怎么显示啊.
fearch(datarow r in dt)
这样,根本就不认啊
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"])
}