Это третье основное редактирование этого вопроса, поэтому я сначала напишу небольшую краткую сводку, а затем задам вопрос.
У меня есть модель ввода / редактирования, которую я планирую использоватьс поддерживаемым EF4 сайтом MVC 2.Модель выглядит следующим образом:
public class AdminGameEditModel
{
[Required]
public int GameID { get; set; }
[Required(ErrorMessage="A game must have a title")]
public string GameTitle { get; set; }
[Required(ErrorMessage="A short URL must be supplied")]
public string ShortURL { get; set; }
[Required(ErrorMessage="A box art image must be supplied")]
public HttpPostedFileBase BoxArt { get; set; }
[Required(ErrorMessage="A large image for the index page is required")]
public HttpPostedFileBase IndexImage { get; set; }
[Required(ErrorMessage="A game must have a review")]
public string ReviewText { get; set; }
[Required(ErrorMessage="A game must have a score")]
public int ReviewScore { get; set; }
[Required(ErrorMessage="A game must have at least one Pro listed")]
public string[] Pros { get; set; }
[Required(ErrorMessage="A game must have at least one Con listed")]
public string[] Cons { get; set; }
[Required(ErrorMessage="A game must belong to a genre")]
public int GenreID { get; set; }
[Required(ErrorMessage="A game must be associated with at least one platform")]
public int[] PlatformIDs { get; set; }
}
Я бы хотел сопоставить ее с сущностью Game для создания / обновления.Однако есть загвоздка - мне нужно сохранить изображения в определенной папке, а затем взять их пути и сохранить эти в качестве свойств моей сущности.Итак, пример для ясности: вместо того, чтобы моя сущность Game имела реальное изображение BoxArt, вместо этого у него был бы путь к правильному изображению BoxArt.Я надеюсь это имеет смысл.Дайте мне знать, если мне нужно уточнить.
Могу ли я сделать это с AutoMapper?Если да, может ли кто-нибудь предоставить руководство по коду?
РЕДАКТИРОВАТЬ:
Отчасти проблема заключается в том, что моя модель довольно сложна, поскольку содержит отношение «многие ко многим».PlatformID в конечном итоге используются для создания / перестройки (в зависимости от того, создаю я или обновляю сущность) связанных сущностей Platform на карте Game / Platform.Я не уверен, что AutoMapper может сделать что-то такое сложное без необходимости проходить через мой репозиторий.
Тогда есть проблема путей к изображениям.Пути не являются свойством HttpPostedFileBase
, но должны быть построены вручную следующим образом:
if (BoxArt.ContentLength > 0) {
var fileName = Path.GetFileName(BoxArt.FileName);
var path = Path.Combine(Server.MapPath("~/Content/Images/BoxArt"), fileName);
BoxArt.SaveAs(path);
}
Итак, то, что я ищу, является более сложным, чем просто попытка отобразить простые свойства между объектами,Я хотел бы сохранить ссылку на мою модель редактирования из моего хранилища.Разделение проблем и все такое.Из-за этого мне нужно сопоставить объект, прежде чем я попытаюсь передать его в репозиторий для сохранения.Я просто не уверен, как это сделать, не смешивая слои приложения.