NHibernate LINQ クエリに射影を ( 経由で) 追加しようとして.select()
いますが、ロジックが少しあるため、射影されたモデルを直接返すのではなく、ヘルパー クラスを使用したいと考えています。
私のコードは次のようになります(短縮):
var query = Session.Query<MessageInstance>();
... (a few .Fetch and .ThenFetch calls)
var result = query.Where(specification.IsSatisfiedBy())
.OrderBy(m => m.CreationDate)
.Select(m => _messageModelHelper.BuildMessageModel(m));
_messageModelHelper
は、オブジェクトを に変換するオブジェクトであり、関連するエンティティにすべて依存するため、さまざまなシナリオを処理するロジックが含まれていますMessageInstance
。MessageModel
これはエラーで失敗します:
フィールド Dal.Repositories.MessageRepository._messageModelHelper' はタイプ 'NHibernate.Linq.NhQueryable`1 [Domain.Entities.Message]' に対して定義されていません
フィールド(DIに必要)の使用を避け、これを行う場合:
.Select(m => new MessageModelHelper().BuildMessageModel(m))
私は単にSystem.NotSupportedException
.
私のアプローチはうまくいかないようです。new MessageModel
直接戻る必要を回避しながら、何ができますか? また、投影を維持する必要があり、列挙可能なものを操作することはできません。