Heim > Artikel > Backend-Entwicklung > Einführung in die Verwendung von AutoMapper in OOM
In diesem Artikel werden hauptsächlich die relevanten Kenntnisse des OOM-Frameworks AutoMapper 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 uns den folgenden Editor an.
steht vor
OOM, wie der Name schon sagt, Object-Object-Mapping-Entitäten werden ineinander konvertiert, AutoMapper Es ist auch ein Klischee. Seine Bedeutung besteht darin, Ihnen bei der Konvertierung einfacher und problematischer Beziehungen zwischen Entitäten wie der Konvertierung zwischen ViewModel und Entity und der Konvertierung zwischen SearchModel und Entity zu helfen Mein Beitrag ist, dass der größte Teil des Teilens im Internet vor einigen Jahren erfolgt ist und viele Methoden aufgegeben wurden. Wenn Sie es erhalten, wird Ihnen der Compiler mitteilen, dass die Methode veraltet und aufgegeben ist und nicht zur Verwendung empfohlen wird. Wie Mapper.CreateMap und andere Methoden. Natürlich gehen die meisten erfahrenen Treiber direkt zu Github, um die Dokumentation zu lesen. Sie können es auch einfach googeln, aber die chinesischen Informationen enthalten keine Erklärung für die aufgegebene Methode. Die fünf Beispiele in diesem Artikel können Ihnen bei der Lösung häufiger Grundprobleme helfen.
Vorbereitung
Zuerst bereiten wir einige ViewModels und TModels vor. ViewModel ist die Entität, mit der Sie mit dem Benutzer interagieren. TModel ist die Entität, die Sie zum Umgang mit der Datenbank verwenden.
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.
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; } }
ViewModel lautet wie folgt:
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; } }
Konvertierung einer einzelnen Entität
Wenn eine einzelne Entität konvertiert wird, in AttributWenn die Feldnamen genau übereinstimmen, müssen Sie nur die Konvertierungsregeln zwischen den beiden Entitäten angeben und die Quellentität und die Zielentität angeben. Dann sollten Sie sich auf die folgenden Beispiele beziehen:
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);
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.
Konvertierung von Eigenschaften mit unterschiedlichen Namen für eine einzelne Entität
Wenn Sie Felder mit unterschiedlichen Namen konvertieren müssen Achten Sie beim Mapping darauf, dass Sie die Methode For verwenden. Der erste Parameter erfordert die Angabe des Zielfelds, das eine spezielle Konfiguration erfordert Die bereitgestellte MapFrom-Methode teilt AutoMapper mit, dass ich die Stadtquelle der Zielentität als City2-Attributwert der Quellentität angeben muss.
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);
Konvertierung festlegen
Beim Konvertieren zwischen Sammlungen müssen Sie den Abgleich zwischen der Zielliste und dem Quelllistenobjekt Sie müssen nur die Mapping-Matching-Beziehung Ihres generischen Objekts konfigurieren.
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);Die Entität enthält verschiedene Arten der Attributkonvertierung (die Attribute werden ignoriert)
Wenn die Entität beispielsweise verschiedene Arten von Attributen enthält, enthält TModel1 eine Liste< ;TModel> und Ihr ViewModel1 enthält eine Listec3232db81f7d071f9370eef3d6b791a7. Zu diesem Zeitpunkt können Sie dieses Attribut ignorieren
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>() 是不同类型,所以需要配置忽略或者是特殊映射,特殊映射例子看下方Die 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, aber verwenden Sie MapFrom, um spezielle Bezeichnungen vorzunehmen. Und wenn die Typen unterschiedlich sind, müssen Sie die Zuordnungsbeziehung zwischen Ihren beiden Typen angeben . Wie in den Beispielen unten
m.CreateMap0eb3c6fb31d7efb9457c116bd799c2ea(); und
m.CreateMap453162b02c806123692898c984a1fdf8().ForMember(x => x.ContactInfo, opt => ; opt.MapFrom(o => o.ContactInfo));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);
1 🎜>
Li Yanhui ASP-Grundlagen-Video-Tutorial
Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung von AutoMapper in OOM. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!