Задать вопрос

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

Разрабатываю многоязычное приложение на 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;}
}
  • Вопрос задан
  • 166 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 1
DarkRaven
@DarkRaven
разработка программного обеспечения
Вы можете сделать представление на уровне БД, в котором выводите пост и все его переводы, т.е. умножение постов на языки + соединение по коду языка его перевода (тут можно так же сделать вывод текста по умолчанию, для перевода, которого нет).

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


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

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

Похожие вопросы