Я подключаю Castle ActiveRecord к устаревшей базе данных, и у меня возникают проблемы с установлением связи «один ко многим».Проблема в том, что внешний ключ не ссылается на первичный ключ другой таблицы, он использует другой столбец.
Это таблицы (сокращенные для ясности):
CREATE TABLE [Rule](
[ID] [uniqueidentifier] NOT NULL,
[HeadingID] [int] NULL
)
CREATE TABLE [Heading](
[ID] [uniqueidentifier] NOT NULL,
[ID2] [int] NOT NULL
)
The HeadingIDполе в таблице правил - это внешний ключ, который ссылается на поле ID2 в заголовке.
Итак, в определении класса правила, которое я имею:Я могу без проблем получить доступ к заголовку правила (если я, конечно, установил HasMany ленивым).
В определении класса заголовка у меня есть:
[HasMany(Lazy = true)]
public IList<Rule> Rules { get; set; }
Когда я получаю доступ к коллекцииЯ получаю исключение SQL «Столкновение типов операндов: уникальный идентификатор несовместим с int».Похоже, что AR пытается сделать такой выбор (упрощенный для ясности):
SELECT ... FROM Rule rules0_ ... WHERE rules0_.HeadingID = ?
Где?это GUID из Heading.ID (это должно быть int из Heading.ID2).
Я не могу найти свойство для HasMany, которое позволяет мне задать столбец, к которому относится внешний ключ.Есть ли способ сделать это?