Маппинг переводимых сущностей. Как?

Разрабатываю многоязычное приложение на C# (Web API). В качестве ORM использую Entity Framework. Для маппинга использую Automapper.

В БД переводимые сущности хранятся следующим образом (пример):
Posts: id, category_id, date_updated, date_created
PostTranslations: post_id, language_code, title, text
Languages: code, name

Вопрос: как осуществлять маппинг данных с классов сущностей БД на DTO? В запросе может прийти 2 параметра: language и fallback_language.
DTO, в случае с постами, имеет следующий вид:
public class PostDto {
    public int Id {get; set;}
    public string Title {get; set;}
    public DateTime CreatedAt {get; set;}
}
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
DarkRaven
@DarkRaven
разработка программного обеспечения
Вы можете сделать представление на уровне БД, в котором выводите пост и все его переводы, т.е. умножение постов на языки + соединение по коду языка его перевода (тут можно так же сделать вывод текста по умолчанию, для перевода, которого нет).

Потом, просто делаете :
var posts = db.PostViews.AsNoTracking().Where(x=>x.LanguageCode == CurrentLanguageCode)
	.ProjectTo<PostDto>();


где PostViews - это ваше представление в БД, с полями из post-а и, как минимум, кодом языка.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы