2

我只是从这里复制并发布以下方法,这是定义:

public IList<Post> PostsForCategory(string categorySlug, int pageNo, int pageSize)
{
    var query = _session.Query<Post>()
                    .Where(p => p.Published && p.Category.UrlSlug.Equals(categorySlug))
                    .OrderByDescending(p => p.PostedOn)
                    .Skip(pageNo * pageSize)
                    .Take(pageSize)
                    .Fetch(p => p.Category);

    query.FetchMany(p => p.Tags).ToFuture();

    return query.ToFuture().ToList();
}

但是,我使用的是 Entity 框架而不是 NHibernate,但是 EntityFramework 没有任何定义Fetchor FetchMany!如何使用实体框架做到这一点?

4

2 回答 2

3

您可以通过以下Include方法执行此操作:http: //msdn.microsoft.com/en-us/data/jj574232.aspx

注意,Include是一个扩展方法,所以你必须System.Data.Entity在编译之前添加到你的 using 语句中。

于 2013-03-28T14:14:14.160 回答
0

我使用 NHibernate 将 MVC 中的完整项目迁移到实体框架。如果您在项目中有良好的逻辑并牢记下一次转换,我相信您不会有问题。

ISession ==> DbContext
session.QueryOver<T> ==> dbContext.Set<T>
session.Query<T> ==> dbContext.Set<T>
Query<T>.Fetch() ==> Set<T>.Include()
session.CreateSQLQuery ==> dbContext.Database.SqlQuery
ClassMapping<T> ==> EntityTypeConfiguration<T>
于 2016-11-08T19:18:58.123 回答