使用Entity Framework获取

时间:2013-03-28 14:11:56

标签: c# entity-framework

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

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没有FetchFetchMany的任何定义!我如何使用Entity框架做到这一点?

2 个答案:

答案 0 :(得分:3)

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

注意,Include是一种扩展方法,因此在编译之前,您必须将System.Data.Entity添加到using语句中。

答案 1 :(得分:0)

我使用NHibernate将MVC中的完整项目迁移到Entity Framework。如果您的项目中有一个良好的逻辑并牢记下一次转换,我相信您可能会遇到问题。

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>