Heim > Backend-Entwicklung > C#.Net-Tutorial > Einführung in die Verwendung von AutoMapper in OOM

Einführung in die Verwendung von AutoMapper in OOM

Y2J
Freigeben: 2017-05-06 11:37:57
Original
1655 Leute haben es durchsucht

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; }
}
Nach dem Login kopieren
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; }
 }
Nach dem Login kopieren

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; }
 }
Nach dem Login kopieren

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

Konvertierung festlegen

Beim Konvertieren zwischen Sammlungen müssen Sie den Abgleich zwischen der Zielliste und dem Quelllistenobjekt<🎜 nicht konfigurieren > 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);
Nach dem Login kopieren
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 Liste. 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>() 是不同类型,所以需要配置忽略或者是特殊映射,特殊映射例子看下方
Nach dem Login kopieren
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.CreateMap(); und

m.CreateMap().ForMember(x => x.ContactInfo, opt => ; opt.MapFrom(o => o.ContactInfo));


【Verwandte Empfehlungen】
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);
Nach dem Login kopieren


1 🎜>

2.

ASP-Tutorial

3.

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage