Ich versuche, Entitäten in einer Sammlung durch eine viele bis viele Tabelle mithilfe von AutoMapper abzubilden.AutoMapper viele zu viele Beziehung in Sammlung
Mein Domain-Modell (Entity Framework) sieht wie folgt aus:
public class User
{
public int UserID { get; set; }
public string Name { get; set; }
public IList<UserCompany> UserCompanies { get; set; }
}
public class Company
{
public int CompanyID { get; set; }
public string Name { get; set; }
}
public class UserCompany
{
public int UserCompanyID { get; set; }
public int UserID { get; set; }
public int CompanyID { get; set; }
}
Ich versuche, zu einer Klasse zuzuordnen, die wie folgt aussieht:
public class CompanyDTO
{
public int CompanyID { get; set; }
public string Name { get; set; }
}
public class UserDTO
{
public int UserID { get; set; }
public string Name { get; set; }
public IList<CompanyDTO> Companies { get; set; }
}
Meine aktuelle Mapping-Konfiguration wie folgt aussieht :
Bestätigen, dass die Konfiguration gültig ist, gibt True zurück, aber wenn ich versuche, zu aktivieren Wenn ich einen User mit einem UserDTO abbilde, bekomme ich: Die Signatur des Body und die Deklaration in einer Methodenimplementierung stimmen nicht überein.
Wenn ich AfterMap verwende und jedes Unternehmen manuell in die Firmenliste verschiebe, wird es funktionieren, aber es scheint, als ob ich in der Lage sein sollte, dies innerhalb der create map zu handhaben.
In meiner Abfrage, um einen einzelnen Benutzer aus der Datenbank zu erhalten, ich bin die Benutzereigenschaft UserCompany.Company enthalten und ich kann Quickwatch und sehen, dass es zurückgegeben wird.
Ich habe versucht, was Sie vorgeschlagen, aber das Ergebnis war das gleiche. UserCompany ist eine Entität, die Benutzer und Unternehmen verbindet. Um UserCompany dem Unternehmen zuzuordnen, musste ich also jedes Feld explizit zuordnen, z. B. Mapper.CreateMap() .Formember (dto => dto.Name, opt => opt.MapFrom (x => x.Company.Name); Zusätzlich versuchte ich, meine Linienzuordnung der IList von Company-Objekten zu entfernen, und ich sehe immer noch den gleichen Fehler –
Zusätzlich versuchte, mein MapTo zu diesem zu wechseln : .ForMember (dto => dto.Companies, opt => opt.MapFrom (x => x.UserCompanies)), gleicher Fehler –
Mighty, ich habe es herausgefunden.Ich dachte nicht, dass es erwähnenswert ist, aber die Dto-Objekte, denen ich zugeordnet habe, waren Interfacetypen. Der Fehler trat auf, als AutoMapper versuchte, ein Proxy-Objekt dafür zu erstellen. Mein ursprünglicher Mapping-Code funktionierte einwandfrei, mit dem Hinzufügen dieser Zeile zum Mapping-Setup. .ConstructUsing ((Func) (x => neues UserDTO())) Danke für Ihre Hilfe! –