FluentNHibernate - Mapeando una clase a múltiples tablas

Lo siento por una larga pregunta. Pero vale la pena dar todos los detalles, así que por favor tengan paciencia conmigo hasta el final.

Estoy trabajando contra una base de datos heredada sobre la que no tengo mucho control. Quiero poder asignar una clase a varias tablas de base de datos. Así es como se ven mis mesas.

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 puede ver, tengo una tabla de búsqueda donde se almacenan todas las búsquedas. El texto de visualización para una búsqueda se localiza y se almacena en una tabla separada. Esta tabla tiene una clave externa para la tabla de cultura para indicar la cultura para la que existe el texto localizado.

Mi clase se ve asi

public class Lookup {

    public virtual int Id {get; set;}

    public virtual string Code {get; set;}

    public virtual string DisplayText {get; set;}
}

Y mi clase de mapeo FNH se ve así

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

En el mapeo anterior, enJoin parte quiero proporcionar alguna cláusula donde comoWHERE Lookup_t9n.Culture_Id = Culture.Culture_Id AND Culture.Culture_Code = System.Threading.Thread.CurrentUICulture.CultureCode.

Sé que este no es un SQL válido pero transmite la intención que espero. ¿Alguien tiene alguna experiencia de hacer tal cosa?

Puedo agregar una capa de mapeo donde puedo tener clases que se asignan una a una con tablas de base de datos y luego escribir c # simple para asignar esas clases a miLookup clase. Más bien he hecho eso como una solución provisional. Me preguntaba si puedo eliminar esa capa de mapeo con un uso inteligente de NH.

Respuestas a la pregunta(1)

Su respuesta a la pregunta