public ViewResult Details(string strap)
{
var parcel = _service.GetProperty(strap);
var owners = _service.GetOwners(parcel);
var other_characteristics = _service.GetOtherCharacteristics(parcel);
var viewModel = new PropertyViewModel();
Mapper.Map(parcel, viewModel);
Mapper.Map(owners, viewModel.Owners);
Mapper.Map(other_characteristics.DELINEATED_DISTRICT, viewModel.DELINEATED_DISTRICT);
return View(viewModel);
}
書く必要があるのはこれだけになるようにコードをセットアップできるはずだと思います。AutoMapper が残りを処理します。または、これよりもさらに少なく書くこともできます。
Mapper.Map(parcel, viewModel);
Mapper.Map(owners, viewModel);
Mapper.Map(other_characteristics.DELINEATED_DISTRICT, viewModel);
これが私のオーバーライドされた Configure() メソッドです。この質問を最初に書いたので、DELINEATED_DISTRICT のマッピングをまだ追加していません。
protected override void Configure()
{
//TODO: Add Mappings from Models to Data Objects
CreateMap<Property, PropertyViewModel>();
CreateMap<IEnumerable<Owner>, PropertyViewModel>();
//Names are the same in domain and viewModel
}
ビューモデル
public class PropertyViewModel
{
public PropertyViewModel()
{
Owners = new List<Owner>();
Characteristics = new List<Characteristics>();
}
public string STRAP { get; set; }
public string PROPERTY_ID { get { return String.Format("{0}-{1}-{2}", STRAP.Substring(0, 4), STRAP.Substring(4, 2), STRAP.Substring(6, 4)); } }
public string SITUS { get; set; }
public string MAILING_ADDRESS { get; set; }
public string PROPERTY_USE { get; set; }
public string SUBDIVISION { get; set; }
public string DSCR { get; set; }
public string LAND_AREA { get; set; }
public string INCORPORATION { get; set; }
public string SEC_TWP_RGE { get; set; }
public string CENSUS { get; set; }
public string DELINEATED_DISTRICT { get; set; }
public IList<Owner> Owners { get; set; }
public IList<Characteristic> Characteristics {get;set;}
}
モデル
public class Property
{
[Key]
public string STRAP { get; set; }
public string PROPERTY_ID {get;set;}
public string SITUS { get; set; }
public string MAILING_ADDRESS { get; set; }
public string PROPERTY_USE { get; set; }
public string SUBDIVISION { get; set; }
public string DSCR { get; set; }
public string LAND_AREA { get; set; }
public string INCORPORATION { get; set; }
public string SEC_TWP_RGE { get; set; }
public string CENSUS { get; set; }
}
public class Owner
{
[Key]
public string OWNER_ID {get;set;}
public string STRAP {get;set;}
public string NAME {get;set;}
}