自动映射嵌套模型
本文关键字:模型 嵌套 映射 | 更新日期: 2023-09-27 18:36:41
我正在尝试将模型从提供程序项目自动映射到 wcf 数据协定。但是,它们在原始(嵌套)中都有另一个模型/数据协定。例如:我们有一个客户模型,保存姓名、电话号码、EIN 等信息......但是,每个客户端可以有多个联系人(另一种模型)。我将如何使用流畅的映射在自动映射器中映射它?以下是课程。
数据合约
客户端数据协定
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace DSP.NET.WholeSale.Service.DataContracts
{
[DataContract]
public class ClientDataContract
{
[DataMember]
public int? Id { get; set; }
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public string Organization { get; set; }
[DataMember]
public string Email { get; set; }
[DataMember]
public string UserName { get; set; }
[DataMember]
public string Password { get; set; }
[DataMember]
public List<ContactDataContract> Contacts { get; set; }
[DataMember]
public string WorkPhone { get; set; }
[DataMember]
public string HomePhone { get; set; }
[DataMember]
public string MobilePhone { get; set; }
[DataMember]
public string FaxNumber { get; set; }
[DataMember]
public string Language { get; set; }
[DataMember]
public string CurrencyCode { get; set; }
[DataMember]
public string Notes { get; set; }
[DataMember]
public AddressDataContract PrimaryAddress { get; set; }
//public Address MailingAddress { get { return this.PrimaryAddress; } set { this.PrimaryAddress = value; } }
//public Address PostalAddress { get { return this.PrimaryAddress; } set { this.PrimaryAddress = value; } }
[DataMember]
public AddressDataContract SecondaryAddress { get; set; }
//public Address BillingAddress { get { return this.SecondaryAddress; } set { this.SecondaryAddress = value; } }
[DataMember]
public string VATName { get; set; }
[DataMember]
public int? VATNumber { get; set; }
}
}
联系人数据合约
using System.Runtime.Serialization;
namespace DSP.NET.WholeSale.Service.DataContracts
{
[DataContract]
public class ContactDataContract
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public string Organization { get; set; }
[DataMember]
public string Email { get; set; }
[DataMember]
public string UserName { get; set; }
[DataMember]
public string Password { get; set; }
[DataMember]
public string WorkPhone { get; set; }
[DataMember]
public string HomePhone { get; set; }
[DataMember]
public string MobilePhone { get; set; }
[DataMember]
public string FaxNumber { get; set; }
// TODO: Language Code also
// TODO: Currency Code
[DataMember]
public string Notes { get; set; }
[DataMember]
public AddressDataContract PrimaryAddress { get; set; }
//public Address MailingAddress { get { return this.PrimaryAddress; } set { this.PrimaryAddress = value; } }
//public Address PostalAddress { get { return this.PrimaryAddress; } set { this.PrimaryAddress = value; } }
[DataMember]
public AddressDataContract SecondaryAddress { get; set; }
//public Address BillingAddress { get { return this.SecondaryAddress; } set { this.SecondaryAddress = value; } }
[DataMember]
public string VATName { get; set; }
[DataMember]
public int? VATNumber { get; set; }
}
}
提供程序模型
客户端模型
public class Client
{
public int? Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Organization { get; set; }
public string Email { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public List<Contact> Contacts { get; set; }
public string WorkPhone { get; set; }
public string HomePhone { get; set; }
public string MobilePhone { get; set; }
public string FaxNumber { get; set; }
public string Language { get; set; }
public string CurrencyCode { get; set; }
public string Notes { get; set; }
public Address PrimaryAddress { get; set; }
public Address MailingAddress { get { return this.PrimaryAddress; } set { this.PrimaryAddress = value; } }
public Address PostalAddress { get { return this.PrimaryAddress; } set { this.PrimaryAddress = value; } }
public Address SecondaryAddress { get; set; }
public Address BillingAddress { get { return this.SecondaryAddress; } set { this.SecondaryAddress = value; } }
public string VATName { get; set; }
public int? VATNumber { get; set; }
}
联系人模型
public class Contact
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Organization { get; set; }
public string Email { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string WorkPhone { get; set; }
public string HomePhone { get; set; }
public string MobilePhone { get; set; }
public string FaxNumber { get; set; }
// TODO: Language Code also
// TODO: Currency Code
public string Notes { get; set; }
public Address PrimaryAddress { get; set; }
public Address MailingAddress { get { return this.PrimaryAddress; } set { this.PrimaryAddress = value; } }
public Address PostalAddress { get { return this.PrimaryAddress; } set { this.PrimaryAddress = value; } }
public Address SecondaryAddress { get; set; }
public Address BillingAddress { get { return this.SecondaryAddress; } set { this.SecondaryAddress = value; } }
public string VATName { get; set; }
public int? VATNumber { get; set; }
}
您必须为所有使用的类创建映射,以便将Client
映射到ClientDataContract
Mapper.CreateMap<Client, ClientDataContract>();
Mapper.CreateMap<Contact, ContactDataContract>();
Mapper.CreateMap<Address, AddressDataContract>();
Wiki页面说,创建联系人到联系人数据合同映射就足够了,所有通用集合都将被映射。