FluentNHibernate - Отображение класса в несколько таблиц

Извините за длинный вопрос. Но стоит дать все детали, поэтому, пожалуйста, потерпите меня до конца.

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

Lookup

+--------+--------------+------------+
| Column |   DataType   | Attributes |
+--------+--------------+------------+
| Id     | INT          | PK         |
| Code   | NVARCHAR(50) |            |
+--------+--------------+------------+

Culture

+--------------+--------------+------------+
|    Column    |   DataType   | Attributes |
+--------------+--------------+------------+
| Id           | INT          | PK         |
| Culture_Code | NVARCHAR(10) |            |
+--------------+--------------+------------+

Lookup_t9n

+----------------+---------------+---------------------+
|     Column     |   DataType    |     Attributes      |
+----------------+---------------+---------------------+
| Id             | INT           | PK                  |
| Culture_Id     | INT           | FK to Culture table |
| Localised_Text | NVARCHAR(MAX) |                     |
+----------------+---------------+---------------------+

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

Мой класс выглядит так

public class Lookup {

    public virtual int Id {get; set;}

    public virtual string Code {get; set;}

    public virtual string DisplayText {get; set;}
}

И мой класс отображения FNH выглядит так

public class LookupMappings : ClassMap<Lookup> {

    public LookupMappings()
    {
        Table("Lookup");
        Id(x => x.Id).Column("Id");
        Map(x => x.Code).Column("Code");

        Join("Lookup_t9n", join => {
            join.Map(x => x.DisplayText).Column("Localised_Text"); //Note this place, my problem is here
        })
    }
}

В приведенном выше отображении, вJoin часть, которую я хочу предоставить некоторые где пункт, какWHERE Lookup_t9n.Culture_Id = Culture.Culture_Id AND Culture.Culture_Code = System.Threading.Thread.CurrentUICulture.CultureCode.

Я знаю, что это не допустимый SQL, но выражает намерение, которое я надеюсь. Есть ли у кого-нибудь опыт такой вещи?

Я могу добавить слой отображения, где у меня могут быть классы, которые сопоставляются один с одним с таблицами базы данных, а затем написать простой c #, чтобы сопоставить эти классы с моимLookup класс. Я скорее сделал это как временное решение. Мне было интересно, смогу ли я удалить этот слой отображения с помощью умного использования NH.

Ответы на вопрос(1)

Ваш ответ на вопрос