Je ne suis pas sûr à 100% que cela fonctionnera réellement. Mais ça vaut probablement le coup d'essayer. Disons que vous avez ClassA et ClassB. ClassA devrait avoir une référence à ClassB de la manière que vous décrivez. Vous pouvez ensuite ajouter une propriété à ClassB qui doit contenir le résultat de l'instruction sql gauche. Pour ne pas l'appeler BKey pour le moment. Alors ClassB ressemblerait à quelque chose comme ceci:
public class ClassB {
public virtual string BKey { get; set; }
//Other properties
}
Ensuite, lorsque vous associez ClassB vous pouvez mapper une formule à la BKEY de la propriété. Cela ressemblerait à ceci:
Map(x => x.BKey).Formula("(SELECT LEFT(b.[[columnname]], 12) FROM TableB as b WHERE b.Id = Id)");
Cela prendra le résultat de cette requête sql et mettre dans la propriété BKey. Ensuite, lorsque vous associez cette référence pour ClassA vous faites quelque chose comme ceci:
Reference(x => x.ClassB).PropertyRef(x => x.BKey).Column("[[TableAColumnName]]");
Encore une fois, je ne suis pas sûr que cela fonctionne, je ne l'ai pas essayé quelque chose comme ça moi-même.