nHibernate查询到等效实体框架查询

时间:2012-07-10 07:10:11

标签: entity-framework fluent-nhibernate entity-framework-4.1

由于部分信任问题,我们目前正在从我们的应用程序中删除流利的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);
    }

非常感谢任何帮助/指示。

1 个答案:

答案 0 :(得分:2)

AFAIK EF没有查询批处理see here。你可以implement it yourself这很棘手。

另外,你可以让NH在中等信任,信息herehere下工作。

this link的评论中,有一个链接到NHibernate dll在中等信任下工作(我没有自己测试过)。