난 기본적으로 가입 조건이 그 Translation.Unit.Text == ExternalUnit.Text
NHibernate에서이 프로젝션을 수행하는 방법?
<Translation>,<ExternalUnit.Text>,<ExternalTranslation.Text>
에 결과를 얻을하려는 Job
주어진 들어
내 데이터베이스에 이러한 기관이
이것은 내가 지금까지 잘 해낸 것입니다.
var props = session.QueryOver<Translation>(() => translation)
.Select(c => translation.Id, c => externalUnit.Text, c => externalTranslation.Text)
.JoinAlias(() => translation.TranslationUnit,() => unit)
.JoinAlias(() => unit.Job,() => job)
.Where(() => unit.Job == job)
.JoinAlias(() => job.ExternalUnits,() => externalUnit)
.JoinAlias(() => externalUnit.ExternalTranslations,() => externalTranslation)
.Where(() => externalUnit.Text == unit.Text)
.List<object[]>();
var translations = session.QueryOver<Translation>(() => translation)
.JoinAlias(() => translation.TranslationUnit,() => unit)
.JoinAlias(() => unit.Job,() => job)
.Where(() => unit.Job == job)
.JoinAlias(() => job.ExternalUnits,() => externalUnit)
.JoinAlias(() => externalUnit.ExternalTranslations,() => externalTranslation)
.Where(() => externalUnit.Text == unit.Text)
.List<Translation>()
.ToList();
그런 다음 props
을 참조하여 translations
을 반복합니다. 그러나 필자는 불필요하게 두 가지 (거의 동일한) 쿼리를 데이터베이스 대신 하나만 수행하기 때문에이 방법이 마음에 들지 않습니다.
그러나 원하는 투영을 얻을 수 없습니다. (그것이 나 전체 개체를 투영하는 것을 허용하지 않습니다) NHibernate에이 Select(() => translation...)
비트를 좋아하지 않는다, 분명히,
var data = session.QueryOver<Translation>(() => translationAlias)
.JoinAlias(() => translation.TranslationUnit,() => unit)
.JoinAlias(() => unit.Job,() => job)
.Where(() => unit.Job == job)
.JoinAlias(() => job.ExternalUnits,() => externalUnit)
.JoinAlias(() => externalUnit.ExternalTranslations,() => externalTranslation)
.Where(() => externalUnit.Text == unit.Text)
.Select(() => translation,() => externalUnit.Text,() => externalTranslation.Text)
.List()
을하지만 :이처럼 뭔가에 대해 생각했다.
이상적으로
어떤 제안을 주셔서 대단히 감사합니다 ... 나는var data = session.QueryOver<Translation>()
...
.Select(() => new { A = translation, B = externalTranslation })
처럼 익명의 유형으로 선택하고 싶습니다하지만 난 NHibernate에 지금까지이없는 것 같아요.
쿨 : 매우 기쁘게 생각합니다 공급자가되었지만 지금은 앞으로 나아 갔다는 것을 알 수 있습니다. – Rippo
@Rippo 재미있는 점은 나도 자신의 블로그에 질문하고 있다는 것입니다 : -P http://puredotnetcoder.blogspot.com/2011/07/queryover-with-multiple-joins-into-dto.html – twoflower