web-dev-qa-db-ja.com

AutoMapper.dllで「AutoMapper.AutoMapperMappingException」が発生しました

 public class ClientViewModel
    {
        [Required(ErrorMessage = "The Client Code field is required.")]  
        public string ClientCode { get; set; }
        [Required(ErrorMessage = "The Company Legal Name field is required.")]  
        public string CompanyLegalName { get; set; }
        public string Notes { get; set; }
        public string Address { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string Zip { get; set; }
        public Nullable<DateTime> ScheduledDate { get; set; }
        public Nullable<decimal> AmountDiscount { get; set; }
    }

    public class Client
    {
        public string ClientCode { get; set; }   
        public string CompanyLegalName { get; set; }
        public string Notes { get; set; }
        public string Address { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string Zip { get; set; }
        public Nullable<DateTime> ScheduledDate { get; set; }
        public Nullable<decimal> AmountDiscount { get; set; }
    }

編集:

例外の詳細:AutoMapper.AutoMapperMappingException:タイプマップ構成が欠落しているか、マッピングがサポートされていません。

マッピングタイプ:クライアント-> ClientViewModel myapp.Models.Client-> myapp.Models.ClientViewModel

宛先パス:ClientViewModel

ソース値:myapp.Models.Client

私のClientClientViewModelにはまったく同じ数の小道具があり、以下は私が使用しているコードと多くの情報を取得せずにスローするエラーですが、ここで何が欠けていますか?

Client client = context.Clients.Where(x => x.CustomerID == id).FirstOrDefault();
ClientViewModel clientViewModel = Mapper.Map<Client, ClientViewModel>(client);

タイプ 'AutoMapper.AutoMapperMappingException'の例外がAutoMapper.dllで発生しましたが、ユーザーコードでは処理されませんでした

7
Nick Kahn

マップを作成するのを忘れただけです。これをコードに追加します(Mapperクラスを呼び出す前に):

Mapper.CreateMap<Client, ClientViewModel>();
ClientViewModel cvm = Mapper.Map<Client, ClientViewModel>(client);

dotnetfiddleでの作業デモ

マップを呼び出す前。 CreateMapを呼び出す必要があります。

Mapper.CreateMap<Client, ClientViewModel>();

通常、これはアプリケーションの初期化コード/クラス、たとえばglobal.asax.csで呼び出します。

3
Noel