私は、私は基本的に参加する条件はその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();
translations
をループし、props
を参照してください。しかし、私は不必要に2つ(ほとんど同一)のクエリを1つではなくデータベースに実行するので、このアプローチは嫌いです。
しかし、私は希望の投影を得ることができません。私はこのような何かを考えていた:
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()
しかし、明らかに、NHibernateのは(それは私が全体のエンティティを投影することはできません)Select(() => translation...)
ビットが好きではありません。
理想的には私が
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