我正在考虑创建一段代码,以允许我根据字符串类名动态查询我的数据库。
我在这里想要的简要概述:
我的背景:
public class MyContext : DbContext
{
public DbSet<Foo> Foos {get;set;}
public DbSet<Bar> Bars {get;set;}
}
通过我所拥有的设置,我通过执行基本操作来查询此上下文,context.Foos.Where(...)
并且我基本上也想做同样的事情,但不必.Foos
在编译时知道该部分,而是希望在运行时完成。
逻辑上我想要的是:
var results = context."ClassName".Where(...)
我试图用一个通用的方法来做到这一点,比如:
//method in context
public IEnumerable<T> GetGenericData<T>() where T : Type
{
return context.Set<T>();
}
//call in repo
context.GetGenericData<Type.GetType("Foo")>();
不确定我是否在这里走对了路。理想情况下,我想获得一个解决方案,这意味着我不必走 SQL 路线
编辑:一直在努力,我已经到了这一点。
//method in context
public DbSet GetGenericData(Type _type)
{
return context.Set(_type);
}
//calling like
var data = context.GetGenericData(myType);
现在的问题是,它var data
是一个 DbSet。我需要能够将其转换为在运行时定义的类型列表。有没有一个简单的解决方案来做到这一点,因为我不能简单地做var data = context.GetGenericData(myType).toList()
Edit2:为了给问题添加更多上下文,我正在考虑创建一段代码来从文件中读取数据库表的列表,例如,获取这些表中的数据并将其序列化为 XML 文件。
基本上我会有一个包含以下内容的文件:
Foo
Bar
MoreStuff
然后读取它,并将 Foo 表中的所有数据导出到一个名为 Foo.xml 的 xml 文件中。还必须做相反的事情,它从 xml 文件中读取数据并将其导入数据库