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