Используйте таблицу поиска вместо попытки навязать порядок сортировки со значением перечисления в качестве идентификатора и дополнительными полями для кода языка и перевода. Если вы закроете перевод и языковой код индексом, вы сможете быстро сортировать и фильтровать по переведенному значению.
Перечисления - это концепция клиента language , предназначенная для нечастого изменения. В базе данных списки значений хранятся в таблицах. Перечисляемые значения будут отображаться как значения magi c, если вы не сохраните их в своих собственных таблицах.
Как только вы обнаружите, что вам нужно выполнить операции с данными (например, сортировку) над незначными свойствами, такими как имена, или вы обнаружите, что число значений меняется слишком часто, вам нужно также начать рассматривать перечисления как реляционные сущности.
Это не означает, что они должны отображаться как ORM-сущности в вашем DbContext, если только это не DbContext, предназначенный для управления переводами:
- Вы можете использовать разные контексты для запросов и редактирования. Локализованная сортировка обычно используется для отчетов о запросах. Отображение материала в сетке также является отчетным запросом. В этих случаях вы можете сопоставить вашу сущность с локализованным представлением, которое объединяет основные таблицы с таблицами поиска и позволяет фильтровать и сортировать по языку.
- Вы можете использовать необработанные запросы , чтобы отобразить на функция или необработанный запрос, который возвращает имя поиска и добавляет к нему дополнительные операторы LINQ.
- Вы можете использовать EF Core Interceptors , чтобы добавить логи поиска c к запросу, хотя это более сложно, чем использование различных контекстов.
Если вы хотя вы планируете поддерживать многие языки, вам следует подумать о правильном дизайне локализации данных, хранящихся в базе данных.