0

テンプレート T に基づいて読み込まれるデータベースがあります。ただし、文字列に基づいて、または「T2」テンプレートを渡すことで、他のテーブルを結合したいと考えています。

このような関数を作成して IQueryable を生成するにはどうすればよいですか?

public void createJoinedTable<T, T2>(T2 join_table, string join_on_this_property, string order, string order_by)
            where T : class
            where T2 : class
   {

            var table = GetGenericTable<T>(); // I have the IQueryable<T> of the main table. 
            // now join the joined table.
            var id = 1;
            table = table    // your starting point - table in the "from" statement
               .Join(join_table, // the source table of the inner join
                  firsttable => post.myid,        // Select the primary key (the first part of the "on" clause in an sql "join" statement)
                  secondtable => meta.othertableid,   // Select the foreign key (the second part of the "on" clause)
                  (firsttable, secondtable) => new { Unknown = firsttable , Unknown2 = secondtable}) // selection
               .Where(x => x.Unknown.ID == id);    // where statement

           table = table.CustomOrderByDescending(order_by, direction); // custom ordering by string
           m_queryable = table; // record results.
   }

問題は、Entity クラスによって制約されていないため、.Join() を実行できないことです。一般的な「クラス」として制約されます。

どこ T : クラスの代わりに T: MyEntityTable

さて、引数でそれを行った場合、「汎用結合テーブル関数」を使用する意味は何ですか?

テキストベースの引数に基づいて、好きなものに参加できるようにしたい.

これを達成するには、「join_on_this_property」をどのように使用すればよいですか?

ボーナス チャレンジ: 「List tables, List join_ON_properties」に基づいて無制限にテーブルを結合しますが、これは非常に複雑になる可能性があります。

4

0 に答える 0