モデルをプロバイダー プロジェクトから 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; }
}