我正在尝试构建一个函数,该函数基于从另一个函数作为字符串传递给它的表名,将数据库表的所有内容从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为该表已生成的对象中。否则,我将遇到一些非常重要的问题。