1

必要なプロパティを指定できるモデル用のある種の動的ローダーを作成しようとしています。その主な目的は、個々のモデルREST APIに関する動的情報を提供するを作成することです。JSON

API、たとえばによってアクセスされます /api/model?id=581D1393-3436-4146-A397-E47CF5419453&fields=foo,bar,baz

この目的のために、 ScottGu のブログDynamic LINQで説明されているようなものを使用しました。問題は、結合を使用して複数のテーブルに対してクエリを実行し、異なるテーブルからデータをロードする必要があることです。この場合、私が知る限り、これは実行できません。

今は、クエリを好きなように作成できるObjectQuery<DbDataRecord>アプローチを使用しEntity SQLていますが、この場合、コンパイラの検証が失われ、リファクタリングが難しくなります。

私の質問は、この種の問題に対するベスト プラクティス シナリオはありますか? そして、他のもので達成する方が簡単かもしれませんORMか?

ご挨拶

ルスラン A.

4

1 に答える 1

0

あなたはできないと思っていても、実際にはできると思います。遅延読み込みのためにこれを言っています。

using(var someContext = new SomeContextEntities())
{
    var data = someContext.Entity;

    foreach(var kvp in queries)
    {
        switch(kvp.Key)
        {
            case "q1":
                var val = kvp[kvp.Key];
                data = data.Where(q => q.q1 == val);
                break;
            case "q2":
                var val2 = kvp[kvp.Key];
                data = data.Where(q => q.q2 == val2);
                break;
            case "q3":
                var val3 = kvp[kvp.Key];
                data = data.Where(q => q.q1.q3 == val3);
            ...
        }
    }
    return data.ToList();
}

生成されたスクリプトまたは結果セットを見ると、必要なものが得られます。

于 2011-09-25T05:20:14.033 に答える