Я использую ASP.NET MVC 3 с Raven DB в качестве резервного хранилища данных.У меня есть набор моделей, которые я заинтересован в преобразовании в ViewModels.Для этого я использую AutoMapper, чтобы позаботиться о грязной работе по сопоставлению каждого свойства с соответствующим в ViewModel.Допустим, у меня есть такая модель:
public class FooModel
{
public int Id { get; set; }
public string Name { get; set; }
public int AlphaId { get; set; }
public int BetaId { get; set; }
}
А потом, скажем, я хочу преобразовать ее в ViewModel, например:
public class FooViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public int AlphaId { get; set; }
public Alpha Alpha { get; set; }
public int BetaId { get; set; }
public Beta Beta { get; set; }
}
Моя карта тогда установленапримерно так при запуске приложения:
Mapper.CreateMap<Foo, FooViewModel>();
Затем в контроллере я выполняю карту так:
public ActionResult FooDetails(string id)
{
using(var session = this.documentStore.OpenSession())
{
var fooInstance = session.Load<Foo>(id);
var fooViewModel = Mapper.Map<FooViewModel>(fooInstance);
return this.View(fooViewModel);
}
}
Проблема в том, что, как вы можете видеть выше,У сущности, выходящей из хранилища, есть 2 свойства, которые являются ключами других объектов, типов Alpha и Beta.Я заинтересован в увлажнении Альфа и Бета на основе ключей Альфа и Бета.
Сначала я подумал, что смогу использовать возможности пользовательского преобразования AutoMapper, но я не думаю, что это сработает, учитывая, что нам потребуется сеанс данных, который будет вставлен в отображение (для вызова хранилища данных для извлеченияАльфа или Бета объект).
Другой вариант - просто выполнить всю работу в действии контроллера, но это быстро становится громоздким (не в данном конкретном примере, а лишь в качестве примера для иллюстрации сути).
Где должна происходить гидратация альфа и бета, и каков здесь хороший пример?