FluentNHibernate - Mapeando uma classe para várias tabelas

Desculpe por uma longa pergunta. Mas vale a pena dar todos os detalhes, por favor, aguarde comigo até o fim.

Eu estou trabalhando contra um banco de dados legado sobre o qual eu não tenho muito controle. Eu quero ser capaz de mapear uma classe para várias tabelas de banco de dados. Aqui está como minhas tabelas parecem

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

Como você pode ver, eu tenho uma tabela de pesquisa onde todas as pesquisas são armazenadas. O texto de exibição de uma pesquisa é localizado e armazenado em uma tabela separada. Esta tabela tem uma chave estrangeira para a tabela de cultura para indicar a cultura para a qual o texto localizado existe.

Minha aula parece com isso

public class Lookup {

    public virtual int Id {get; set;}

    public virtual string Code {get; set;}

    public virtual string DisplayText {get; set;}
}

E minha classe de mapeamento FNH se parece com isso

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

No mapeamento acima, emJoin parte eu quero fornecer alguma cláusula where comoWHERE Lookup_t9n.Culture_Id = Culture.Culture_Id AND Culture.Culture_Code = System.Threading.Thread.CurrentUICulture.CultureCode.

Eu sei que isso não é um SQL válido, mas transmite a intenção que espero. Alguém tem alguma experiência de fazer uma coisa dessas?

Eu posso adicionar uma camada de mapeamento onde eu posso ter classes que mapeiam um-para-um com tabelas de banco de dados e, em seguida, escrever c # simples para mapear essas classes de volta ao meuLookup classe. Eu tenho feito isso como uma solução provisória. Eu queria saber se eu posso remover essa camada de mapeamento com algum uso inteligente de NH.

questionAnswers(1)

yourAnswerToTheQuestion