【问题标题】:Use variable as entity table name使用变量作为实体表名
【发布时间】:2011-06-02 20:39:48
【问题描述】:

有没有办法动态定义表名,这样如果我正在访问的表因不同的条件而不同,我就不必进行多次调用?如果我可以使用变量名,我不想为我访问的每个表都设置 if/else。

using (Entity ctx = new Entity())
{
    dbTableVal = "EntityTables";
    var query = from d in dbTableVal
                where d == "Yes"
                select d;
}

【问题讨论】:

    标签: c# sql entity-framework


    【解决方案1】:

    我猜不是,因为表本身也定义了返回的IQueryable<T> 的类型。使用 ESQL(具有字符串语法)甚至无法在您不知道结果集类型的情况下定义通用查询。

    【讨论】:

    • 是的,我试着把它作为一个变量工作,但发现我只做三个表,所以我使用了一个开关而不是尝试使用一个变量。
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      您可以创建一个接受“对象”和“类型”并返回 IQUEryable 的函数?

      例如:

      private IQueryable GetQuery(object Table, Type t)
      {
          var query = from d in ((t)Table) where d == "Yes" select d;
          return query;
      }
      

      未经测试!!!所以可能需要对此做一些变化,但这些方面的东西可能对你有用....

      【讨论】:

      • 我认为如果你想使用类型来进行这样的转换,你的方法签名需要是私有的 IQueryable GetQuery(object Table)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-31
      • 2021-11-16
      相关资源
      最近更新 更多