Может ли ORMLite указать внешний ключ для атрибута, отличного от первичного ключа

#servicestack #ormlite-servicestack #servicestack-autoquery

Вопрос:

У меня есть структура таблицы, в которой внешний ключ из таблицы сотрудников ссылается на что-то другое, кроме первичного ключа таблицы отдела. Это по историческим причинам, так что так оно и есть.

Это работает: q.Join<Department>((e, d) => e.DepartmentId == d.DepNo); . Обратите внимание, что первичным ключом отдела является Id .

Теперь, могу ли я каким-либо образом указать связь соединения (с именем столбца)? Причина в том, что я хотел бы использовать встроенную IJoin<Employee,Department> функцию автозапроса, но это не позволяет мне указывать используемые столбцы.

Ответ №1:

Пожалуйста, ознакомьтесь с документами о соглашениях о ссылках для определения неявных ссылок PK и FK.

Автозапрос поддерживает только неявные ссылки, если вам нужно более индивидуальное поведение, вам нужно будет создать пользовательскую реализацию автозапроса.

Комментарии:

1. Да, я подумал, что, возможно, была некоторая перегрузка атрибута Reference or ForeignKey , который мог бы явно указать его (имя внешнего столбца), но, похоже, оба они всегда ссылаются на первичный ключ другой таблицы. Это не большая проблема, так как у меня есть обходной путь.