NHibernate C # - корреляционное имя 'X' указывается несколько раз в предложении from - PullRequest
0 голосов
/ 08 ноября 2018

Я столкнулся со следующей ошибкой: Имя корреляции 'accountali4_' указано несколько раз в предложении from. . Я использую Fluent Nhibernate в C #.

У кого-нибудь есть идеи, как это решить? Спасибо

Эта ошибка возникает только тогда, когда я выполняю соединение с "SwiftCommonData"

РЕДАКТИРОВАНИЕ: Добавление дополнительной информации. Mt942Message является подклассом TypedMessage, и я заметил, что любое соединение с ней выдает исключение.

FxSwiftMessage swiftAlias = null;
BasicHeaderBlock basicHeaderAlias = null;
ApplicationHeaderBlock appHeaderAlias = null;
Mt942Message typedAlias = null;
SwiftCommonData accountAlias = null;

return CurrentSession.QueryOver<FxSwiftMessage>(() => swiftAlias)
            .JoinAlias(() => swiftAlias.BasicHeader, () => basicHeaderAlias)
            .JoinAlias(() => swiftAlias.ApplicationHeader, () => appHeaderAlias)
            .JoinAlias(() => swiftAlias.Text.TypedMessage, () => typedAlias)
            //.JoinAlias(() => typedAlias.AccountIdentification, () => accountAlias)
            .Where(() => typedAlias.GetType() == typeof(Mt942Message))
            .And(() => ((DateTime)appHeaderAlias.InputDate).Date == referenceDate)
            .And(() => basicHeaderAlias.LogicalTerminalAddress.IsLike(bicRecipient, MatchMode.Start))
            .And(() => appHeaderAlias.RecipientsBic.IsLike(bicSender, MatchMode.Start))
            .And(() => swiftAlias.Process == false)
            //.And(() => accountAlias.Data == account)
            .TransformUsing(Transformers.DistinctRootEntity)
            .List<FxSwiftMessage>();

Здесь SQL, сгенерированный Fluent Nhibernate, четыре раза для "accountali4_".

FROM TB_BTG_SWIFT_MESSAGE this_ 
    inner join TB_BTG_SWIFT_BASIC_HEADER basicheade1_ on this_.ID_BASIC_HEADER=basicheade1_.ID_BASIC_HEADER 
    inner join TB_BTG_SWIFT_APPLICATION_HEADER appheadera2_ on this_.ID_APPLICATION_HEADER=appheadera2_.ID_APPLICATION_HEADER 
    inner join TB_BTG_SWIFT_TYPED_MESSAGE typedalias3_ on this_.ID_TYPED_MESSAGE=typedalias3_.ID_TYPED_MESSAGE 
    inner join TB_BTG_SWIFT_COMMON_DATA accountali4_ on typedalias3_.ID_ACCOUNT_IDENTIFICATION=accountali4_.ID_COMMON 
    inner join TB_BTG_SWIFT_COMMON_DATA accountali4_ on typedalias3_.ID_ACCOUNT_IDENTIFICATION=accountali4_.ID_COMMON 
    inner join TB_BTG_SWIFT_COMMON_DATA accountali4_ on typedalias3_.ID_ACCOUNT_IDENTIFICATION=accountali4_.ID_COMMON 
    inner join TB_BTG_SWIFT_COMMON_DATA accountali4_ on typedalias3_.ID_ACCOUNT_IDENTIFICATION=accountali4_.ID_COMMON 

этот вопрос не является дубликатом: Имя корреляции 'MR' указывается несколько раз в предложении FROM

Nhibernate генерирует SQL. Я хотел бы понять почему, если я сделал ошибку в отображении или запросе.

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