研究linq+nhibernate有一段时间了,最近尝试做了个项目,感觉问题好多。性能问题尤其的突出,先上代码
public ActionResult ViewIndex(int? id)
{
IRepository<user> u = new Repository<user>();
IRepository<lesson> l = new Repository<lesson>();
IRepository<Views> t = new Repository<Views>();
IQueryable<Vik> admin = (from v in t.GetAll().AsEnumerable()
orderby v.Id
select new Vik
{
Id = v.Id,
Ip = v.Ip,
Address = v.Address,
Time = v.Time,
Lessonname = l.GetAll().FirstOrDefault(x => x.Classid == v.Classid).Lessonname,
Username = u.GetAll().FirstOrDefault(x => x.Userid == v.Userid).Username,
Freetime1 = v.Freetime1,
Freetime2 = v.Freetime2
}).AsQueryable();
PagedList<Vik> orders = admin.ToPagedList(id ?? 1, 10);
return View(orders);
}
这是一个分页的数据列表显示,因为牵扯到一些数据的问题,所以没有搞主外键关系。
from v in t.GetAll().AsEnumerable() 这个地方 获取出来数据后要先转换一下 由IQueryable的格式转换成IEnumerable
然后获取完成后又要转换回去,感觉好多余啊!分页控件需要的是IQueryable格式public class Repository<T> : IRepository<T> where T : class
{
public IQueryable<T> GetAll()
{
ISession session = NHibernateHelper.GetCurrentSession();
var result = from s in session.Query<T>()
select s;
return result;
}
}