0

검색을 많이했는데 Automapper로지도를 수집하는 방법을 잘 모릅니다.오토 맵퍼로 컬렉션 매핑?

을 감안할 때 :

Public Class PostSummaryDTO 
     Public Property PostId As Integer 
     Public Property PostGuid As Guid 
     Public Property PostTitle As String 
     Public Property PostSummary As String 
     Public Property PostDateCreated As DateTime 
     Public Property PostIsPublished As Boolean 
     Public Property PostText As String 
     Public Property PostCategory As ICollection(Of be_Categories) 
     Public Property PostTag As ICollection(Of be_PostTag) 
     Public Author As String 
    End Class 

Public Class be_PostsViewModel 
     Public Property Id As Integer 
     Property Author As String 
     <DisplayName("Title")> <Required(ErrorMessage:="Your post must have a title")> 
      Public Property PostTitle As String 
     <DisplayName("My Snarky Text")> Public Property PostSummary As String 
     <DisplayName("Post")> Public Property PostText As String 
     <UIHint("DateCreated")> <DisplayName("Date Created")> Property PostDateCreated  
      As DateTime? 
     <DisplayName("Publish")> Public Property PostIsPublished As Boolean 
     Public Property PostGuid As Guid 
     Public Property BlogId As Guid 
     <DataType(DataType.MultilineText)> <UIHint("Tags")> <DisplayName("Tags")> 
      Public Property PostTags As ICollection(Of be_PostTag) 
     <DisplayName("Category")> <UIHint("Categories")> Public Property 
      PostCategory As ICollection(Of CategoriesViewModel) 

    End Class 

을 어떻게지도 할 Public Property PostCategory As ICollection(Of be_Categories) 당신이 CategoriesViewModelbe_Categories에 대한 매핑을 작성하고 PostSummaryDTObe_PostsViewModel에 AutoMapper가 자동으로 이해됩니다 후

+0

이 질문을 확인하십시오 http://stackoverflow.com/questions/13687240/c-sharp-automapper-map-collection-of-objects, 그것은 간단해야 Map < PostCategory, CategoriesViewModel>을 사용하면 컬렉션이나 목록이 있으면 충분합니다. –

답변

0

Public Property PostCategory As ICollection(Of CategoriesViewModel)에 그리고 나머지는 돌봐.

' Do this only once in your application 
Mapper.CreateMap(Of be_Categories, CategoriesViewModel)() 
Mapper.CreateMap(Of PostSummaryDTO, be_PostsViewModel)() 

Dim yourDTO = New PostSummaryDTO() 
' Set all your DTO values here 

' Call AutoMapper 
Dim vm As be_PostsViewModel = Mapper.Map(Of be_PostsViewModel)(yourDTO) 

vm

이제 Collection 포함 좋게 매핑 된 모든 속성을 가져야한다. "내부 유형"이 매핑 될 때 컬렉션을 자동으로 매핑 할 수 있습니다. 지원되는 모든 컬렉션 here을 볼 수 있습니다.

방금 ​​테스트를 거쳤습니다.

업데이트 : 당신이 만든 있기 때문에 자동으로 당신을 위해 List(Of CategoriesViewModel)을 만들 것, 다시

' Create a mapping for the types inside the collection 
Mapper.CreateMap(Of be_Categories, CategoriesViewModel)() 

' Declare a collection of be_Categories 
Dim col As New List(Of be_Categories)() 
' Insert all the items 
Dim cat = New be_Categories() 
col.Add(cat) 

' Call AutoMapper stating that you want a List as return 
Dim vm As List(Of CategoriesViewModel) = Mapper.Map(Of List(Of CategoriesViewModel))(col) 

: 당신은 그냥 바로 다른 하나 개의 변수에서 컬렉션을 매핑 할 경우, 당신은이 작업을 수행 할 것 내부 유형에 대한 매핑.

종류가 다르지만 AutoMapper는 동일한 속성을 나타내는 IdPostId을 인식하지 못합니다. 모든 AutoMapper의 규칙에 대해 알아볼 수 있습니다 here

+0

'속성'이란 정확히 무엇을 의미합니까? 바보 같은 질문에 대한 미안하지만 Automapper에 처음이고 예제를 줄 수 있습니까? 덕분에 –

+0

나는 당신이 당신의 소스 객체의 모든 값을 설정한다는 것을 의미한다. 'dto.PostTitle = "Title"','dto.PostText = "Text"와 유사합니다. 내 대답에 사용 된 코드는 완전한 작동 예제입니다. 너 해봤 니? –