Я не уверен на 100%, что это действительно сработает. Но, наверное, стоит попробовать. Допустим, у вас есть ClassA и ClassB. ClassA должен иметь ссылку на ClassB так, как вы описываете. Затем вы можете добавить свойство в ClassB, которое должно содержать результат оператора LEFT sql. Чтобы не называть это пока BKey. Тогда ClassB будет выглядеть примерно так:
public class ClassB {
public virtual string BKey { get; set; }
//Other properties
}
Затем, когда вы отображаете ClassB, вы можете сопоставить формулу со свойством BKey. Это будет выглядеть так:
Map(x => x.BKey).Formula("(SELECT LEFT(b.[[columnname]], 12) FROM TableB as b WHERE b.Id = Id)");
Это возьмет результат этого SQL-запроса и поместит в свойство BKey. Затем, когда вы отображаете эту ссылку для ClassA, вы делаете что-то вроде этого:
Reference(x => x.ClassB).PropertyRef(x => x.BKey).Column("[[TableAColumnName]]");
Опять же, я не уверен, что это сработает, я сам такого не пробовал.