Использование AutoQuery для объединения таблицы с двумя внешними ключами, указывающими на таблицы поиска

Итак, мы внедрили AutoQuery с нашими сервисами, и пока он работает отлично. Единственная основная проблема, с которой мы сталкиваемся, заключается в том, что у нас уже есть установленная БД с ужасными соглашениями об именах и ссылочными шаблонами (и эти соглашения явно не соответствуют натуре OrmLite), поэтому мы теряем некоторые достоинства AutoQuery, так как насколько ОТО идут.

В настоящее время я нахожусь в ситуации, когда у меня есть таблица под названием Gadgets который имеет две ссылки внешнего ключа на таблицы под названием DateRangeType а также DashboardDataType, Эти таблицы поиска являются небольшими и в основном используются для сопоставления перечисления на внутреннем интерфейсе, чья ссылка передается нашему внешнему интерфейсу (Typescript). Вот структура POCO:

public class Gadget
{
    [AutoIncrement]
    [PrimaryKey]
    public int Id { get; set; }
    [ForeignKey(typeof(DashboardDataType))]
    public int DataTypeId { get; set; }
    public string ReportSid { get; set; }
    [ForeignKey(typeof(DateRangeType))]
    public int DateRangeTypeId { get; set; }
    public int DateRangeAmount { get; set; }
}

public class DateRangeType
{
    [AutoIncrement]
    [PrimaryKey]
    public int Id { get; set; }
    public string Name { get; set; }
}

public class DashboardDataType
{
    [AutoIncrement]
    [PrimaryKey]
    public int Id { get; set; }
    public string DataType { get; set; }
    public string DisplayName { get; set; }
    public string Description { get; set; }
    public DataEnum DataEnum { get; set; }
}

Объединения AutoQuery хорошо работают, когда действуют соглашения об именах и они запрашивают родительскую таблицу, на первичный ключ которой ссылается FK в других таблицах, но здесь мы имеем противоположную ситуацию.

При создании собственного DTO GadgetDto при запросе Gadget в DTO с помощью QueryDb<Gadget, GadgetDtoЯ могу загрузить вложенные объекты из таблиц поиска, добавив дополнительный типизированный член в DTO и [Reference]это, то есть:

public class GadgetDto
{
    public int Id { get; set; }
    [ForeignKey(typeof(DashboardDataType))]
    public int DataTypeId { get; set; }
    [Reference]
    public DashboardDataType DashboardData { get; set; }
    public string etc...
}

... Тем не менее, мне интересно, есть ли какая-то приятная функциональность AutoQuery, чтобы сделать это с Querydb<>, IJoin<> реализация. Цель состоит в том, чтобы сгладить вложенные члены DashboardDataType в результате DTO. Я пытался совмещать вещи {Table}.{Name} соглашения о соединении, но так как запрашиваемая таблица имеет FK, я не думаю, что IJoin будем сотрудничать.

Любая помощь будет с благодарностью. Спасибо!

0 ответов