2016-10-17 4 views
0

Ich habe folgendes DTO:zu DTO Liste Eigenschaft

public class QuestionGroupDTO : IBaseDTO 
{ 
    public string Description { get; set; } 
    public string Header { get; set; } 
    public Guid Id { get; set; } 
    public int Order { get; set; } 
    public IEnumerable<Services.Forms.Models.RelationForm_QuestionGroupDTO> RelationForms_QuestionGroups { get; set; } 
    public IEnumerable<RelationQuestionGroup_QuestionDTO> RelationQuestionGroups_Questions { get; set; } 
} 

Ich habe Probleme mit den RelationQuestionGroups_Questions während der Konvertierung.

Hier ist, wie meine RelationQuestionGroup_QuestionDTO wie

sieht
public class RelationQuestionGroup_QuestionDTO 
{ 
    public int Order { get; set; } 
    [Required] 
    public Guid QuestionGroupId { get; set; } 
    [Required] 
    public Guid QuestionId { get; set; } 

    public virtual QuestionGroupDTO QuestionGroup { get; set; } 
    public virtual QuestionDTO Question { get; set; } 
} 

Hier ist, wie ich konvertieren:

public static QuestionGroupDTO ToDTO(this QuestionGroup src) 
{ 
    var dto = new QuestionGroupDTO 
    { 
     Id = src.Id, 
     Header = src.Header, 
     Description = src.Description, 
     RelationQuestionGroups_Questions = src.RelationQuestionGroups_Questions.ToList() 
    }; 
    return dto; 
} 

Wie Sie sehen können, ich versuche es einfach zuweisen und eine Liste davon machen , aber ich habe hier einen Castingfehler. Ich bin mir nicht sicher, wie ich das machen soll.

bekomme ich folgende Fehlermeldung:

Cannot implicity convert type Generic List to System.Collections.Generic.IEnumerble

Wer kann mir helfen?

+1

_ "ein Casting Fehler" _ - welche? Was hat Ihre Recherche dafür gezeigt? Sie können Ihre RelationQuestionGroups_Question-Entität nicht implizit in eine RelationQuestionGroups_QuestionDTO konvertieren. Sie müssen sie genau so zuordnen, wie Sie die QuestionGroupDTO zuordnen. – CodeCaster

+1

Ich bin sicher, dass der Fehler besagt, dass IEnumerable nicht implizit auf IEnumerable QuietNaN

+0

@CodeCaster umgewandelt werden kann: Aber wie kann ich dies zuordnen und dieses zugeordnete Objekt der QuestionGroupDTO hinzufügen? – Bryan

Antwort

0

Sie haben vergessen RelationQuestionGroups_Questions zu RelationQuestionGroup_QuestionDTO abzubilden.

public static QuestionGroupDTO ToDTO(this QuestionGroup src) 
{ 
    var dto = new QuestionGroupDTO 
    { 
     Id = src.Id, 
     Header = src.Header, 
     Description = src.Description, 
     RelationQuestionGroups_Questions = src.RelationQuestionGroups_Questions.Select(rq => new RelationQuestionGroup_QuestionDTO 
      { 
       Order = rq.Order, 
       QuestionGroupId = rq.QuestionGroupId, 
       QuestionId = rq.QuestionId 
      }).ToList() 
     }; 
    return dto; 
} 
+0

Was ist mit dem virtuellen QuestionDTO in RelationQuestionGroups? – Bryan

+0

Sie sollten es auch abbilden, Question = new QuestionDTO {ID = rq.Question.ID ...} – QuietNaN

1

Sie haben einen guten Start in Mapping, aber bei RelationQuestionGroups_Questions = src.RelationQuestionGroups_Questions.ToList(), Sie versuchen, eine List<Entity>-List<Dto> zuzuweisen. Das kannst du nicht tun.

Sie müssen auch alle nicht-primitiven Eigenschaften zuordnen. Sie können das tun dies wie:

public static QuestionGroupDTO ToDTO(this QuestionGroup src) 
{ 
    var dto = new QuestionGroupDTO 
    { 
     // ... 
     RelationQuestionGroups_Questions = src.RelationQuestionGroups_Questions 
               .Select(ToDTO) 
               .ToList() 
    }; 
    return dto; 
} 

Sie dann eine Methode hinzufügen RelationQuestionGroups_Question zu RelationQuestionGroups_QuestionDTO zur Karte:

public RelationQuestionGroups_QuestionDTO ToDTO(RelationQuestionGroups_Question entity) 
{ 
    return new RelationQuestionGroups_QuestionDTO 
    { 
     Order = entity.Order, 
     // ... 
    }; 
} 

Und dann werden Sie bei AutoMapper gehen zu sehen, dies zu automatisieren.

+0

Und ich muss dies auch mit dem QuestionDTO (innerhalb RelationQuestionGroups_QuestionDTO) tun? – Bryan

+0

@Bryan Ja, Sie müssen auch alle nicht-primitiven (oder besser jeden Typ, für den keine implizite Konvertierung in den Zieltyp existiert) zuordnen. – CodeCaster

+0

Okey. Aber wie füge ich das zugeordnete QuestionDTO zu RelationQuestionGroups_Questions hinzu? Sie verwenden. Wählen Sie (ToDTO) für die RelationQuestionGroups. Aber wie wäre es mit QuestionDTO? Soll ich es von innen ToDTO nennen? – Bryan