In diesem Artikel werden hauptsächlich die relevanten Kenntnisse des OOMFrameworksAutoMapper vorgestellt. Die fünf Beispiele in diesem Artikel können Ihnen bei der Lösung häufiger Grundprobleme helfen. Es hat einen bestimmten Referenzwert. Schauen wir es uns mit dem Editor unten an
-Object-Mapping Gegenseitige Konvertierung zwischen Entitäten, AutoMapper ist auch ein Klischee. Seine Bedeutung besteht darin, Ihnen bei der Konvertierung einfacher und problematischer Beziehungen zwischen Entitäten zu helfen, z. B. der Konvertierung zwischen ViewModel und Entität sowie der Konvertierung zwischen SearchModel und Die Bedeutung meiner Freigabe liegt darin, dass die meisten Freigaben im Internet schon vor einigen Jahren erfolgt sind und der Compiler Ihnen mitteilt, dass die Methode veraltet, aufgegeben und nicht zu empfehlen ist .CreateMap und andere Methoden Natürlich sind die meisten erfahrenen Treiber einfach zu Github gegangen, um die Dokumentation zu lesen, oder ich habe sie einfach gegoogelt und herausgefunden, aber die chinesischen Informationen haben nichts über die Aufgabe der Methode erklärt. Die fünf Beispiele in diesem Artikel können Ihnen bei der Lösung häufiger Grundprobleme helfen.Vorbereitung
Die Entitäten werden wie folgt angezeigt:TModel verfügt über die folgenden drei einfachen Entitäten. Sie verfügen über unabhängige Entitäten und Eins-zu-viele-Entitäten.
ViewModel lautet wie folgt:
public class TAddress { public string Country { get; set; } public string City { get; set; } public string Street { get; set; } public string PostCode { get; set; } public string CreateTime { get; set; } public int CreateUserId { get; set; } }
public class TAuthor { public string Name { get; set; } public string Description { get; set; } public List<TContactInfo> ContactInfo { get; set; } } public class TContactInfo { public int Id { get; set; } public string Email { get; set; } public string Blog { get; set; } public string Twitter { get; set; } }
Konvertierung einzelner Entitäten
Wenn beim Konvertieren einer einzelnen Entität die
public class VM_Address { public string Country { get; set; } public string City { get; set; } public string City2 { get; set; } } public class VM_Author { public string Name { get; set; } public string Description { get; set; } public List<VM_ContactInfo> ContactInfo { get; set; } } public class VM_ContactInfo { public int Id { get; set; } public string Email { get; set; } public string Blog { get; set; } public string Twitter { get; set; } }
Bitte beachten Sie, dass in AutoMapper5.x Initialize zum Initialisieren Ihrer Regeln bevorzugt wird.
Nachdem Sie die Konvertierungsregeln festgelegt haben, verwenden Sie bitte die Map-Methode, um Ihre Zielentitäten zu konvertieren und auszugeben. Der erste Parameter stellt SourceModel dar und der zweite Parameter ist DestinationModel.VM_Address dto = new VM_Address { Country = "China", City = "Beijing" }; Mapper.Initialize(m => m.CreateMap<VM_Address, TAddress>()); TAddress address = Mapper.Map<VM_Address, TAddress>(dto);
Sammlungskonvertierung
Beim Konvertieren zwischen Sammlungen müssen Sie die Zielliste und die Quellliste nicht konfigurieren
VM_Address dto = new VM_Address { Country = "China", City2 = "Beijing" }; Mapper.Initialize(m => m.CreateMap<VM_Address, TAddress>().ForMember(x => x.City, opt => opt.MapFrom(o => o.City2))); TAddress address = Mapper.Map<VM_Address, TAddress>(dto);
Entität enthält verschiedene Arten der Attributkonvertierung (Attribute ignorieren)
Wenn die Entität verschiedene Arten von Attributen enthält, Beispielsweise enthält TModel1 eine Liste
TAddress address = new TAddress { Country = "China", City = "Beijing" }; TAddress address2 = new TAddress() { Country = "USA", City = "New York" }; List<TAddress> addressList = new List<TAddress>() { address2, address }; Mapper.Initialize(m => m.CreateMap<TAddress, VM_Address>());//这里仅需配置实体间的转换,而不是实体集合的转换 List<VM_Address> res = Mapper.Map<List<TAddress>, List<VM_Address>>(addressList);
Entität enthält verschiedene Arten der Attributkonvertierung (angegebenes Attribut Mapfrom)
Wenn Sie dieses Attribut benötigen, können Sie es natürlich nicht ignorieren, sondern verwenden Sie MapFrom, um eine spezielle Spezifikation vorzunehmen, und wenn der Typ angegeben ist ist nicht Wenn sie gleich sind, müssen Sie die Zuordnungsbeziehung zwischen Ihren beiden Typen angeben. Wie in den Beispielen unten
var contacts = new List<TContactInfo>() { new TContactInfo() { Blog = "myblog", Email = "ws@qq.com" }, new TContactInfo() { Blog = "myblog", Email = "ll@qq.com" } }; TAuthor author = new TAuthor() { Description = "描述", Name = "吴双", ContactInfo = contacts }; Mapper.Initialize(m => { m.CreateMap<TAuthor, VM_Author>().ForMember(x => x.ContactInfo, opt => opt.Ignore()); }); VM_Author dto = Mapper.Map<TAuthor, VM_Author>(author); //这里的Ignore代表配置ContractInfo该属性的操作 为 忽略Ignore,映射时将忽略该属性 由于List<TContactInfo>()和List<VM_ContactInfo>() 是不同类型,所以需要配置忽略或者是特殊映射,特殊映射例子看下方
m.CreateMap
var contacts = new List<TContactInfo>() { new TContactInfo() { Blog = "myblog", Email = "ws@qq.com" }, new TContactInfo() { Blog = "myblog", Email = "ll@qq.com" } }; TAuthor author = new TAuthor() { Description = "描述", Name = "吴双", ContactInfo = contacts }; Mapper.Initialize(m => { m.CreateMap<TContactInfo, VM_ContactInfo>();//注意 内部不同类型实体转换时必要的 m.CreateMap<TAuthor, VM_Author>().ForMember(x => x.ContactInfo, opt => opt.MapFrom(o => o.ContactInfo));//注意 制定MapFrom是必要的 }); VM_Author dto = Mapper.Map<TAuthor, VM_Author>(author);
Das obige ist der detaillierte Inhalt vonMachen Sie sich mit den Anwendungsbeispielen des OOM-Frameworks AutoMapper vertraut. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!