问题多多,linq+nhibernate的性能该如何提高

研究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;
}
}
posted @ 2011-05-11 10:38  在北落  阅读(694)  评论(3)    收藏  举报