プロパティのラージロードのための一般的な方法

c# dapper

質問

Dapper.Queryの汎用メソッドを作成しようとしています。今私は困っている。私の例はここにあります

   public IEnumerable<T1> Lazy<T1, T2>(T2 table) where T1 : EntityBase
    {

        using (IDbConnection cn = GetCn())
        {
            cn.Open();

            return cn.Query<T1, T2, T1>("query", (t1, t2) => { t1.???
        }
    }

あなたは以下のように、私はt1のプロパティをt2でロードする必要があります。これも可能ですか?

この例は完了していませんが、もちろん "クエリ"文字列が置き換えられます。これはデモ用です。

受け入れられた回答

Dapperには遅延ロードが含まれておらず、レイジーロードの達成に役立つゼロサポートが提供されています。これは実行しようとしているものではないため、フレームワークではなくユーティリティです。しかし、あなたの例では、水平に分割されたデータについて話していることを示唆しています。たとえば、

select foo.*, bar.*
from foo inner join bar on bar.ParentId = foo.Id
where foo.Category = @category

[foo][bar]両方にId列(手動でパーティション化ルールを指定する方法はありますが、自動的に処理します)があることを簡単に考えてみましょう。そうすれば、

return cn.Query<Foo, Bar, Foo>(query, args, (foo, bar) => {
    foo.Bar = bar;
    return foo;
});

または同様のもの。要点は、 FooBar 別々に (パーティションに基づいて)実現し、それらを組み合わせる方法について心配することです



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow