をDRIVERNAMEしない私持っている以下のクラス:はなぜAutomapperマップDriver.Nameが自動的
public partial class ScheduledDeduction
{
public int ID { get; set; }
public int DriverId { get; set; }
public string Description { get; set; }
public DateTime DateTime { get; set; }
public decimal Amount { get; set; }
public virtual Driver Driver { get; set; }
}
public partial class Driver
{
public int ID { get; set; }
public int CompanyId { get; set; }
public string Name { get; set; }
とビューモデルクラス:
public abstract class ScheduledDeductionDetailVM
{
public int ID { get; set; }
[Display(Name = "Driver Name")]
public string DriverName { get; set; }
public string Description { get; set; }
[Display(Name = "Date")]
[DisplayFormat(DataFormatString = "{0:d}")]
public System.DateTime DateTime { get; set; }
[Display(Name = "Amount")]
[DisplayFormat(DataFormatString = "{0:c}")]
public decimal Amount { get; set; }
}
I持ってAutomapperの次のルール:
CreateMap<Infrastructure.Asset.ScheduledDeduction, ViewModels.ScheduledDeductionDetailVM>();
としてみてください。
ScheduledDeduction scheduledDeduction = db.ScheduledDeductions.Find(id);
ScheduledDeductionDetailVM model = mapper.Map<ScheduledDeductionDetailVM>(scheduledDeduction);
と動作します。どうして? ScheduledDeductionDetailVMにはDriverNameプロパティがあり、ScheduledDeduction.Driver.Nameから取得できます。これはまったく記述しませんでした。しかし、正しくマップされています...
マッピングルールを定義していませんか? – Christos
それはあまりにも広い質問です。それがフレームワークの設計方法です。これはドキュメントに記載されています。それは[フラット化](https:// github。com/AutoMapper/AutoMapper/wiki/Flattening) – Nkosi
https://github.com/AutoMapper/AutoMapper/wiki/Configurationここに表示されている設定を参照してください。そこに記載されているものに似た何かをしていませんか? – Christos