2013-12-17 9 views
12

これは、エンティティフレームワークである:ここでイーガーロード

var department = _context.Departments 
       .Include(dep => dep.Employees.Select(emp => emp.ContactTypes)) 
       .SingleOrDefault(d => d.Id == departmentId); 

私は1つの部門は、関連するすべての従業員と各従業員のためのすべてのコンタクトタイプを含む返されることを期待しています。私は見当がつかない

これはormlite servicestackです。 https://github.com/ServiceStack/ServiceStack.OrmLite

彼らは書く:私はドキュメンタリー/サンプルを見てみると

今の表現のサポートは強い型付けされたAPIで、最も単純なクエリを満たすことができます。より複雑なもの(テーブル結合を使用したクエリなど)では、以下のように未処理のSQLクエリに簡単に戻すことができます。

JoinSqlBuilderクラスがありますが、ネストされたコレクションを返すことはできません。

多分私が望むものはありえないかもしれませんが、たぶんdepartmentIdの全従業員を取得するような妥協をすることができます。次に、私は従業員を推測して特定の従業員IDのすべての連絡先タイプを取得します。階層を作成してリストを割り当てることは、私の仕事です。

しかし、私はより短い解決策があることを願っています。

Department、Employees、ContactTypesという3つのフラットプロパティを持つオブジェクト(Dynamic?)を返すようなクエリが表示される場合もありますが、私のDTOにthoeseプロパティを割り当てます。私が最初に使い始めたとき

+1

@Voters皆さんはhttp://servicestack.uservoice.com/forums/176786-feature-requests/suggestions/4459040-enhance-ormlite-with-common-data-usage-patternsに行って投票してください最高の機能要求を上回ることができる以上に最大3票の投票を! – Pascal

+0

@Voters既に賛成している人もいます:p – Pascal

+0

コードをチェックすると、参照のロードと参照の保存がありますが、バージョン4の機能なので使用しません。 – kirie

答えて

0

[OK]を、...しかし、(私は非常に多くのサービス・スタックを使用していない)

を決定的な答えとしてこれを取るが、状況の詳細ちょうど私の服用しないでください何年も前、私は同じような状況に遭遇しました。参照がちょうど読み込まれないでしょう。あなたと同じように、私は個々のコレクションを自分で列挙して、ORMが簡単に処理できる操作のためにたくさんの余分なコードを書く必要があります。

私がやったことは、オートマッパーを使用することでした。これは、基本的には、どこにあってもすべてのマルチラインループを1行のマッピングステートメントに減らしました。

リンクされたプロパティごとに1つのマッピングステートメントを実行する必要がありましたが、書かなければならなかったコードを減らし、さらに重要なことに、EFが改善されるまで私を動かすか、 。

私はこれを答えとして提案しているわけではありませんし、コメントのために少し大きめです。あなたの思考を異なる方向にシフトすることを提案しています。 。