FluentNHibernate - Mapowanie klasy do wielu tabel

Przepraszam za długie pytanie. Ale warto podać wszystkie szczegóły, więc proszę, zanieś mnie do końca.

Pracuję przeciwko starszej bazie danych, nad którą nie mam zbyt dużej kontroli. Chcę móc zamapować klasę na wiele tabel bazy danych. Oto jak wyglądają moje tabele

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) |                     |
+----------------+---------------+---------------------+

Jak widać, mam tabelę przeglądową, w której przechowywane są wszystkie wyszukiwania. Wyświetlany tekst odnośnika jest zlokalizowany i przechowywany w osobnej tabeli. Ta tabela zawiera klucz obcy do tabeli kultury, aby wskazać kulturę, dla której istnieje zlokalizowany tekst.

Moja klasa wygląda tak

public class Lookup {

    public virtual int Id {get; set;}

    public virtual string Code {get; set;}

    public virtual string DisplayText {get; set;}
}

A moja klasa mapowania FNH wygląda tak

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
        })
    }
}

Na powyższym mapowaniu, wJoin część Chcę podać kilka takich klauzulWHERE Lookup_t9n.Culture_Id = Culture.Culture_Id AND Culture.Culture_Code = System.Threading.Thread.CurrentUICulture.CultureCode.

Wiem, że to nie jest poprawny SQL, ale przekazuje intencję, którą mam nadzieję. Czy ktoś ma jakieś doświadczenie w robieniu czegoś takiego.

Mogę dodać warstwę odwzorowania, w której mogę mieć klasy odwzorowujące jeden na jeden z tabelami bazy danych, a następnie pisać zwykły c #, aby odwzorować te klasy z powrotem na mojeLookup klasa. Zrobiłem to raczej jako rozwiązanie tymczasowe. Zastanawiałem się, czy mogę usunąć tę warstwę odwzorowania za pomocą inteligentnego użycia NH.

questionAnswers(1)

yourAnswerToTheQuestion