Свободное многопользовательское соединение NHibernate на подстроке - PullRequest
0 голосов
/ 11 февраля 2010

Я пытаюсь отобразить 2 таблицы вместе в Fluent Nhibernate, но единственный способ объединить их - использовать функцию LEFT для одного из столбцов. Таким образом, SQL-соединение будет выглядеть так:

select * from TableA INNER JOIN TableB ON LEFT(TableA.ColA, 12) = TableB.ColB

Есть ли способ отобразить это в NHibernate?

1 Ответ

0 голосов
/ 11 февраля 2010

Я не уверен на 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]]");

Опять же, я не уверен, что это сработает, я сам такого не пробовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...