4

NHibernate 3.2 で linq に左結合を実装することは可能ですか?

このSQLクエリに似たlinqクエリを実現したい:

select v.*, cp.EffectiveStart
from Visits v
join VisitServices vs on v.Id = vs.VisitId
left join CarePlans cp on cp.Id = vs.CarePlanId

私はそのようなlinqクエリを書きました:

var c = (from v in EntitiesRepository
                     join vs in _visitServiceRepository on v.Id equals vs.Visit.Id
                     join cp in _carePlanRepository on vs.CarePlan.Id equals cp.Id into pp                     
                     from pl in pp.DefaultIfEmpty()
                     select new { Visit = v, EffectiveStart = pl.EffectiveStart}).ToList();

しかし、私はこの例外を得ました

メソッドまたは操作が実装されていません。

回答: ナビゲーション プロパティを使用して問題を解決できました。

    var c = (from v in EntitiesRepository
             join vs in _visitServiceRepository on v.Id equals vs.Visit.Id
             select new { Visit = v, EffectiveStart = vs.CarePlan == null ? null : (DateTime?)vs.CarePlan.EffectiveStart}).ToList();
4

2 に答える 2

4

現在、外部結合はナビゲーション プロパティでのみサポートされています。例:

from child in parent.Children.DefaultIfEmpty() 

編集: 申し訳ありませんが、3.2 ではないようです。更新できませんか?

于 2012-11-29T11:47:37.850 に答える
2

ナビゲーション プロパティを使用して問題を修正できました。

    var c = (from v in EntitiesRepository
             join vs in _visitServiceRepository on v.Id equals vs.Visit.Id
             select new { Visit = v, EffectiveStart = vs.CarePlan == null ? null : (DateTime?)vs.CarePlan.EffectiveStart}).ToList();
于 2012-11-29T12:42:05.467 に答える