给出
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中的位置是什么?
答案 0 :(得分:1)
我会这样做:
Mapper.CreateMap<Post, be_postsViewModel>();
在您的应用程序启动(App_Start等)中执行此操作。然后在上面的代码中:
postViewModel = _postRepository.SelectAll.Project.To(Of be_PostsViewModel)
然而,我把&#34; Project.To&#34;在你所有的Where / Skip / Take作品之后。投影是你想要做的最后一件事。 Project.To创建精确的Select表达式,将其传递给查询提供程序以修改其基础的SQL。
除非SelectAll没有返回IQueryable,否则你还有其他更大的问题。