我将如何在此查询中使用 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,否则您还有其他更大的问题。
给定
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,否则您还有其他更大的问题。