私はしばらくかかっていましたが、私が欲しいものを手に入れる方法を考えました。 私のコード:QueryOver - IDは無料だと思いましたか?
var sq = QueryOver.Of<VehicleGroup>(() => vehicleGroup)
.JoinQueryOver<Manager>(vg => vg.Managers)
.Where(man => man.Id == managerId)
.JoinQueryOver<TruckPCBase>(() => vehicleGroup.Vehicles)
.Where(v => v.Id == item.VehicleId)
.Select(vg => vg.Id)
;
var vp = Session.QueryOver<Summary>(() => item)
.WithSubquery.WhereExists(sq)
.Take(10)
.List();
これは私が欲しいものを正確に返します。
しかし、私はそれを動作させるために追加フィールドをマップしなければなりませんでした。
SummaryオブジェクトにはVehicleBaseコンポーネントがあります。
var sq = QueryOver.Of<VehicleGroup>(() => vehicleGroup)
.JoinQueryOver<Manager>(vg => vg.Managers)
.Where(man => man.Id == managerId)
.JoinQueryOver<TruckPCBase>(() => vehicleGroup.Vehicles)
.Where(v => v.Id == item.VehicleBase.Id)
.Select(vg => vg.Id)
;
var vp = Session.QueryOver<Summary>(() => item)
.WithSubquery.WhereExists(sq)
.Take(10)
.List();
これは、次のエラー得られます:私は何をしたかったことはなかった
System.NullReferenceException: Object reference not set to an instance of an object.
at lambda_method(ExecutionScope)
[OK]をので、私は追加のフェッチを追加しました:
var sq = QueryOver.Of<VehicleGroup>(() => vehicleGroup)
.JoinQueryOver<Manager>(vg => vg.Managers)
.Where(man => man.Id == managerId)
.JoinQueryOver<TruckPCBase>(() => vehicleGroup.Vehicles)
.Where(v => v.Id == item.VehicleBase.Id)
.Select(vg => vg.Id)
;
var vp = Session.QueryOver<Summary>(() => item)
.Fetch(sum => sum.VehicleBase).Eager
.WithSubquery.WhereExists(sq)
.Take(10)
.List();
ませサイコロ。私はSummaryクラス(VehicleId)に新しいプロパティを追加したくない - Summary.VehicleBase.Idを通じてアクセスしたい。
提案はありますか?
したがって、どうすれば依存関係を設定できますか? –