如何获得动态IQueryable类型

时间:2015-08-21 14:42:33

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

我在基类中有这样的代码,其派生类的类型是已知的。我想知道是否可以应用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;
    }
}

实施例: 我想获得IQueryAble<>类型的Type EntityType,并且还必须从dbEntities中选择此类型。所以说我在dbEntities中有一个名为giraffe的表,它继承自animal。那么上面的当前代码属于animal基类。 EntityTpe知道EntityType.Name等于长颈鹿。因此,我希望XXX与IQueryable<giraffe> entityResult = dbEntities.giraffe

等效输出

1 个答案:

答案 0 :(得分:2)

您可以使用泛型。您还需要使用上下文的DbSet<T>属性。这样的事情应该做:

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);