由于部分信任问题,我们目前正在从我们的应用程序中删除流利的nhibernate。我们正在使用他们流畅的API转向Entity Framework 5.1RC。
我们的存储库中有以下方法,我试图找出是否可以使用Entity Framework编写相同的查询?我显然希望它尽可能高效。
public PagedList<Topic> GetRecentTopics(int pageIndex, int pageSize, int amountToTake)
{
// Get a delayed row count
var rowCount = Session.QueryOver<Topic>()
.Select(Projections.RowCount())
.Cacheable()
.FutureValue<int>();
// Get the topics using an efficient query
var results = Session.QueryOver<Topic>()
.OrderBy(x => x.CreateDate).Desc
.Skip((pageIndex - 1) * pageSize)
.Take(pageSize)
.Cacheable()
.Future<Topic>().ToList();
// We might only want to display the top 100
// but there might not be 100 topics
var total = rowCount.Value;
if (total > amountToTake)
{
total = amountToTake;
}
// Return a paged list
return new PagedList<Topic>(results, pageIndex, pageSize, total);
}
非常感谢任何帮助/指示。
答案 0 :(得分:2)
AFAIK EF没有查询批处理see here。你可以implement it yourself这很棘手。
另外,你可以让NH在中等信任,信息here和here下工作。
在this link的评论中,有一个链接到NHibernate dll在中等信任下工作(我没有自己测试过)。