Использование 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
будем сотрудничать.
Любая помощь будет с благодарностью. Спасибо!