Это вопрос, который я тоже изучаю, и для моего прецедента, кажется, это значение для инъекций. Он не требует предварительной настройки для использования (может показаться удачной производительность, я думаю, хотя если бы она была реализована, она могла кэшировать сопоставления будущих вызовов, а не отражать каждый раз), поэтому вам не нужно заранее определять какие-либо сопоставления перед их использованием.
Самое главное, однако, это позволяет обратное картирование. Теперь у меня может быть что-то упущено, поскольку Джимми упоминает, что он не видит случая, когда это необходимо, поэтому, возможно, у меня неправильный шаблон, но мой вариант использования заключается в том, что я создаю объект ViewModel из своего ORM. Затем я показываю это на своей веб-странице. Как только пользователь закончит работу, я снова вернусь к ViewModel в качестве httppost, как это преобразуется обратно в исходные классы ORM? Мне бы хотелось узнать образец с автоматом. С ValueInjector это тривиально, и оно будет даже нефиксировано. е.г Создание новой сущности
модель, созданную в entityframework (модель первая):
public partial class Family
{
public int Id { get; set; }
public string FamilyName { get; set; }
public virtual Address Address { get; set; }
}
public partial class Address
{
public int Id { get; set; }
public string Line1 { get; set; }
public string Line2 { get; set; }
public string TownCity { get; set; }
public string County { get; set; }
public string Postcode { get; set; }
public virtual Family Family { get; set; }
}
ViewModel (который я могу украсить валидаторов):
public class FamilyViewModel
{
public int Id { get; set; }
public string FamilyName { get; set; }
public int AddressId { get; set; }
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string AddressTownCity { get; set; }
public string AddressCounty { get; set; }
public string AddressPostcode { get; set; }
}
ViewController:
//
// GET: /Family/Create
public ActionResult Create()
{
return View();
}
//
// POST: /Family/Create
[HttpPost]
public ActionResult Create(FamilyViewModel familyViewModel)
{
try
{
Family family = new Family();
family.InjectFrom<UnflatLoopValueInjection>(familyViewModel);
db.Families.Add(family);
db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
На мой взгляд, это не намного проще?
(Так возникает вопрос, что случилось с картиной, что я бегу в это (и, кажется, многие другие делают в), что его не рассматривается как ценность для AutoMapper?)
Однако, если это образец, который вы хотите использовать, то мой голос - это значение инжектора по сельской миле.
Еще один, который я вижу много, - [EmitMapper] (http://emitmapper.codeplex.com/). – adrianbanks
Как насчет клея? http://glue.codeplex.com/ Похоже, отличный проект, но я еще не пробовал. Я буду в течение следующего месяца. Я также видел проект под названием EmitMapper http://emitmapper.codeplex.com/ – Trygve
См. Статью о двух инструментах: http://devproconnections.com/development/two-great-solutions-object-mapping?NL = 4S3A_News_DPC_UPDATE-ASP.NET_issue090414% 20-% 20Batch & E_ID = 7710159 & NLL = 5209 –