根据实体名称加入查询

时间:2013-10-30 18:12:26

标签: c# entity-framework join entity-framework-4

我有一个基于Template 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.
   }

问题是,我不能做.Join()因为它不受Entity类的约束。它被限制为一般的“类”。

其中T:class而不是T:MyEntityTable

好吧,如果我在参数中这样做,那么拥有“通用连接表函数”的意义何在?

我希望能够根据基于文本的参数加入我想要的任何内容。

我如何使用“join_on_this_property”帮助我完成此任务?

BONUS挑战:根据“列表,列出join_ON_properties”加入无限数量的表 - 但这可能非常复杂。

0 个答案:

没有答案