Свободные таблицы соединений NHibernate в отображении без использования первичного ключа - PullRequest
1 голос
/ 29 апреля 2011

Я пытаюсь создать одну сущность из 2 таблиц, связанных не первичным ключом

Таблицы:

CREATE TABLE [employees](
    [ssn] [nvarchar](9) NULL,
    [active] [bit] NULL,    
    [employee_id] [int] IDENTITY(1,1) NOT NULL 
)


CREATE TABLE [sam_employees](
    [ssn] [nvarchar](9) NULL,
    [first_name] [nvarchar](50) NULL,
    [last_name] [nvarchar](50) NULL,
    [skill] [nvarchar](50) NULL,
    ....
)

SQL для генерации:

SELECT this_.employee_id  as employee1_0_0_,
       this_.ssn          as ssn0_0_,
       this_.active       as active0_0_,
       this_1_.first_name as first2_1_0_,
       this_1_.last_name  as last3_1_0_,
       this_1_.skill      as skill1_0_
FROM   employees this_
       inner join sam_employees this_1_
         on this_.ssn = this_1_.ssn
WHERE  this_.active = 1

Мое текущее отображение:

public class EmployeeMap : ClassMap<Employee>
{
    public EmployeeMap()
    {
        Table("employees");
        Id(x => x.Id, "employee_id");
        Map(x => x.SSN, "ssn");
        Map(x => x.IsActive, "active");

        Join("sam_employees", mm =>
                                  {                                          
                                      mm.KeyColumn("ssn");
                                      mm.Map(xx => xx.FirstName, "first_name");
                                      mm.Map(xx => xx.LastName, "last_name");
                                      mm.Map(xx => xx.Skill, "skill");
                                  });            
    }
}

Но с этим сопоставлением у меня есть такое условие соединения для this_.employee_id = this_1_.ssn

Я знаю, что этот вопрос задавался ранее, но я не нашел хорошего ответа на него, просто обходной путь для использования View на стороне базы данных вместо таблиц.

1 Ответ

3 голосов
/ 29 апреля 2011

Вы можете попробовать сопоставить sam_employees как сущность и использовать сопоставление References с выборкой типа соединения.

...