Свободный NHibernate - сопоставление 2 таблиц с одним классом - PullRequest
1 голос
/ 05 января 2010

У меня есть две таблицы, которые я хочу отобразить в один класс, который будет выглядеть так:

CUSTOMER_INFO_CLASS.cs
----------------------
Id (CUSTOMER table) 
CustomerName (CUSTOMER table)
CustomerTypeDesc (CUSTOMER_TYPE table)

Я попытался сделать это с помощью соединения следующим образом:

Table("CUSTOMER");

Id(x => x.ID).Length(10).Column("CustomerId");
Map(x => x.CustomerName);

Join("CUSTOMER_TYPE", m =>
    {
    m.Optional();
    m.Map(x => x.CustomerTypeDesc);
    m.KeyColumn("CustomerType");
    });

Проблема в том, что поле, с которым я пытаюсь связать две таблицы, не является первичным ключом ни в одной из них. (И по умолчанию объединение выполняется полем, определенным как ID) Поэтому я обнаружил, что для таблицы CUSTOMER_TYPE я могу определить поле с помощью «KeyColumn».
Как я могу определить, что связанный столбец в таблице CUSTOMER будет CustomerTypeCode, а не CustomerId? (если я могу вообще)

В конце SQL-запрос должен выглядеть следующим образом:

Select Id, CustomerName, CustomerAddress, CustomerTypeDesc
From CUSTOMER t1
  Left join CUSTOMER_TYPE t2
    On t1.CustomerTypeCode = t2.CustomerType

1 Ответ

0 голосов
/ 05 января 2010

Если таблица Customer отображает элемент CustomerType на первичный ключ таблицы CustomerType, то Hibernate должен выполнить соединение автоматически для вас.

Есть ли причина, по которой CustomerType не связан обычной ссылкой на внешний ключ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...