【问题标题】:How to get dynamic IQueryable type如何获取动态 IQueryable 类型
【发布时间】:2015-08-21 14:42:33
【问题描述】:

我在一个基类中有这样的代码,它的派生类的类型是已知的。我想知道是否可以申请IQueryable<DerivedType>

我想知道是否可以将XXX 切换为EntityType 变量已知的类类型。从dbEntities选择正确的实体表的结果怎么能做到这一点

BaseClass.cs

protected abstract Type EntityType {get;}

public virtual DataSourceResult populate([DataSourceRequest]DataSourceRequest request)
{

    using (var dbEntities = new dbEntities())
    { 
        IQueryable<XXX> entityResult = dbEntities.XXX;
        DataSourceResult result = entityResult.ToDataSourceResult(request);
        return result;
    }
}

示例: 我想获得Type EntityType 类型的IQueryAble&lt;&gt;,并且还必须从dbEntities 中选择这种类型。假设我在dbEntities 中有一个名为giraffe 的表,它继承自animal。那么上面的当前代码属于animal基类。 EntityTpe 知道 EntityType.Name 等于长颈鹿。所以我会用 XXX 输出等同于IQueryable&lt;giraffe&gt; entityResult = dbEntities.giraffe

【问题讨论】:

  • 是的,如果这是您的问题,您可以用 XXXX 代替任何实现 XXXX 的类
  • 有点,我想获得Type EntityType 类型的IQueryAble&lt;&gt;,并且还必须从dbEntities 中选择这种类型。假设我在dbEntities 中有一个名为giraffe 的表,它继承自animal。那么当前代码属于animal基类。 EntityTpe 知道 EntityType.Name 等于长颈鹿。所以我会用 XXX 输出等同于IQueryable&lt;giraffe&gt; entityResult = dbEntities.giraffe
  • 是的,你可以这样做,实体仍然是一个 POCO .NET 类

标签: c# entity-framework kendo-grid entity iqueryable


【解决方案1】:

您可以为此使用泛型。您还需要使用上下文的 DbSet&lt;T&gt; 属性。应该这样做:

public virtual DataSourceResult populate<T>([DataSourceRequest]DataSourceRequest request)
{

    using (var dbEntities = new dbEntities())
    { 
        IQueryable<T> entityResult = dbEntities.DbSet<T>();
        DataSourceResult result = entityResult.ToDataSourceResult(request);
        return result;
    }
}

然后这样称呼它:

var result = populate<MyEntity>(request);

【讨论】:

  • 我的dbEntites没有DbSet&lt;&gt;()方法,是不是有问题?
  • 好吧,我们不知道您的dbEntities 类型是什么。
  • 所以它是一个继承自 ObjectContext.edmx 文件的模型
  • 你可以改用ObjectSet&lt;T&gt;
猜你喜欢
  • 1970-01-01
  • 2017-01-15
  • 2020-12-22
  • 2011-09-01
  • 1970-01-01
  • 2022-10-05
  • 2017-05-27
  • 2022-12-10
  • 1970-01-01
相关资源
最近更新 更多