通过context.tablename字符串引用实体框架表的任何方法吗?

时间:2019-03-29 12:28:23

标签: c# entity-framework stackexchange.redis

我正在尝试构建一个函数,该函数基于从另一个函数作为字符串传递给它的表名,将数据库表的所有内容从Entity Framework缓存到Redis缓存。

这是为了让我可以从任何实体框架模型中收集表名称,然后构建所有这些表的缓存,从而有效地缓存整个数据库。这是在Redis Multiplexer上的,并且我想在Redis上使用自定义搜索缓存生成,因此我希望能够继续使用它-因此,我也希望能够从表中获取每个字段作为字符串。

我尝试将数据库上下文作为一种类型进行寻址,并通过字符串对其进行寻址,但是都没有奏效。实体框架似乎不喜欢其中没有硬编码的表名等。

public static ViewModels.Common.Alert RedisCacheTbx(/* DatabaseContext,*/ string DatabaseTable, DateTime CacheStartTime)
{
    ViewModels.Common.Alert alert = new ViewModels.Common.Alert();
    ///Verify that this type can be disposed of for the using statement.
    //if (DatabaseContext.IsAssignableFrom(typeof(IDisposable)))
    //{
        using(InspectionEntities context = new InspectionEntities())
        {
            string tablename = String.Format("context.{0}", DatabaseTable);
            Type Table = Type.GetType(tablename);
            if (Table != null)
            {
               //var query = (from a in Table where a.date_modify > CacheStartTime select a);
            }
        }
    //}

    return alert;
}

在尝试运行代码进行测试时,我遇到了无法解决的错误,但是我希望查询能够像普通实体框架查询一样返回-即,基本上是对象列表。

建议答案与我要使用的答案之间的主要区别在于,我不一定会知道要从中提取数据的表的结构-因此,为什么我更喜欢使用实体框架来做到这一点,这样我就可以将其拉入EF为该表已生成的对象中。否则,我将遇到一些非常重要的问题。

0 个答案:

没有答案