【发布时间】:2016-07-18 13:51:02
【问题描述】:
我正在尝试读取包含实体框架的基类的程序集,并使用类型信息来激活或创建相同的类。
我想使用类型信息来动态查询和列出数据库中的所有列和数据。基本上是一个放置所有表格内容的地方。
部分代码如下:
private Type GetInstanceType(string tableName)
{
return Assembly.Load("EntityFrameWorkDLLName").GetTypes().FirstOrDefault(t => t.Name == tableName);
}
public void GetEntityList(string name)
{
// the list method where I pass the table name to query table using the db context
var instanceType =GetInstanceType(name);
if (instanceType != null)
{
var obj = Activator.CreateInstance(instanceType)
db.obj.Select();// here I am stuck without knowing how to proceed
or db.Set<obj.GetType()> // this also fails with error '<' cannot be applied to operands of 'method group' and 'Type'
}
}
可能我想要做的事情很荒谬,但有人能指出原因吗?如果我可以使用具体实例 .gettype 来代表泛型中的类型参数会不会很好,因为那么任何对象都可以动态挂钩?
【问题讨论】:
-
最终结果应该是什么样子?
-
例如:如果我传入我的 EF dll 中存在的表名“用户”,那么该类型将解析为数据库中的用户表并列出所有用户数据。
-
如果最终结果是用户列表,为什么不像dbContext.Users那样直接使用EF呢?我没有看到这里需要反思。
-
今天我知道用户,明天它可以是任何东西。我不想单独对用户进行硬编码。我希望代码推断表类..
-
如果您在设计时不知道表名,则无法使用实体框架。恐怕您将不得不使用存储过程或即时生成 SQL 查询。
标签: c# .net entity-framework generics