【发布时间】:2017-06-19 05:51:00
【问题描述】:
我正在尝试按名称检索 DbContext DbSet 属性,但我不知道如何处理泛型参数。
DataSource.Load(IQuerable source) 方法来自外部 dll,我无法修改。
知道我的 DbSet 属性的属性名称(来自实体框架 dbcontext 类)我想将该属性值用作 DataSource.Load 的参数
public class DataManager
{
private MyDbContext _dbContext;
public DataManager(MyDbContext dbContext)
{
_dbContext = dbContext;
}
public object Load(string propName)
{
var source = _dbContext.GetType().GetProperty(entityName).GetValue(_dbContext, null);
return DataSourceLoader.Load(source);
}
//DataSourceLoader.Load signature:
//DataSourceLoader.Load<T>(System.Linq.IQueryable<T>)
更新
更清楚一点:DataSourceLoader.Load 从实体集中加载数据;我不关心返回类型,因为它将被序列化并发送到客户端插件。
客户端插件使用 entitySet 名称作为参数通过 ajax 调用请求数据。我不想为我拥有的每个实体集使用不同的方法(或长的 switch 语句)并静态调用 DataSource.Load 方法。
我想解析实体集以在运行时查询
【问题讨论】:
-
您正在尝试通过提供属性名称来加载实体属性值?
-
@user3292642 源类型取决于 entityName;这是一个 DbSet
-
@grmbl 是的,这就是我想要做的事情
标签: c# entity-framework generics reflection