Здравствуйте, имеется модель материала
Article:
public partial class Article{
public DBArticle(): base()
{
this.Category = 0;
this.AuthorID = 0;
this.AuthorPseudo = 0;
this.YandexGenre = 1;
this.GoogleGenre = 1;
this.MaterialType = 1;
this.ArticleThemeID = 0;
this.ShowImage = true;
this.Featured = false;
this.Hits = 0;
this.ArticleStyle = 0;
}
public int ID { get; set; }
public string Title { get; set; }
public string Alias { get; set; }
public string Lead { get; set; }
public string Content { get; set; }
public short State { get; set; }
public string Image { get; set; }
public int Category { get; set; }
public string MetaTitle { get; set; }
public string MetaDescription { get; set; }
public string MetaKey { get; set; }
public string Robots { get; set; }
public System.DateTime Created { get; set; }
public int AuthorID { get; set; }
public int AuthorPseudo { get; set; }
public short YandexGenre { get; set; }
public short GoogleGenre { get; set; }
public short MaterialType { get; set; }
public int ArticleThemeID { get; set; }
public bool ShowImage { get; set; }
public bool Featured { get; set; }
public int Hits { get; set; }
public short ArticleStyle { get; set; }
}
Для редактирования в админке данного материала я создал дополнительную модель
FrontEndArticlepublic partial class EditorArticle:Article{
public ArticleModel(Article doc)
{
var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Article, ArticleModel>()).CreateMapper();
mapper.Map(doc,this);
}
public List<SelectListItem> Categories { get; set; }
public List<SelectListItem> Authors { get; set; }
public List<SelectListItem> AuthorsPseudo { get; set; }
public List<Tag> Tags { get; set; }
public List<ArticleTheme> ArticleThemes { get; set; }
public List<GalleryWithRows> Galleries { get; set; }
}
Тут списки:
Categories: категорий
Authors: авторов
AuthorsPseudo : псевдонимов авторов
Tags : тегов
ArticleThemes : тем материалов
Galleries: галлерей
Соответственно для формирования такой модели у меня есть отдельная функция в мусоросборочном классе(так как я не совсем уверен куда это правильно поместить) которая в свою очередь и добывает/формирует все эти списки.
Так же есть еще модель на отображения на самом сайте.
Все это мне не нравится и пока не поздно я хочу это правильно организовать, что бы в будущем было проще поддерживать.
Пожалуйста подскажите как вы организовываете подобное в своем коде и как это сделать правильно? Где должны быть функции для получения такой расширенной модели? Нужна ли вообще такая модель? Как избавиться от одного класса хелпера со всеми подряд функциями(от формирования подобных моделей до формирования строк md5,сохранения файлов и т.д.).
Заранее спасибо)