我将如何在此查询中使用 Automapper?

How would I use Automapper in this query?

给定

      Dim postviewmodel As IEnumerable(Of be_PostsViewModel)

        postviewmodel = _postRepository.SelectAll.Select(Function(S) New
        be_PostsViewModel With {.PostIsPublished = S.PostIsPublished, .Id =
        S.PostId, .PostSummary = S.PostSummary, .PostDateCreated =
        S.PostDateCreated, 
       .PostCategory = S.PostCategory, .PostTitle =
        S.PostTitle}).Where(Function(p) 
        p.PostIsPublished = True).Where(Function(a) Not
        a.PostCategory.FirstOrDefault.CategoryName = "Lead Story")
       .Skip((Page - 1) * PageSize).Take(PageSize)

我如何使用 Automapper 才能避免手动对属性进行所有映射?我对它完全陌生并且已经做了很多阅读但不太了解如何实际去做。我知道我必须创建地图然后调用 Mapper.map。但是在 Mapper.map 中发生了什么?

我会这样做:

Mapper.CreateMap<Post, be_postsViewModel>();

在您的应用程序启动时执行此操作(App_Start 等)。然后在你上面的代码中:

postViewModel = _postRepository.SelectAll.Project.To(Of be_PostsViewModel)

不过,我会把 "Project.To" 放在你所有的 Where/Skip/Take 作品之后。投影是您最不想做的事情。 Project.To 创建确切的 Select 表达式,将其传递给查询提供程序以在其基础上修改 SQL。

除非 SelectAll 不 return IQueryable,否则您还有其他更大的问题。