我有多个实体框架表,我通过它们的部分类使它们支持接口IHistoricEntity
。IHistoricEntity
具有ActiveTo
Datetime?
属性。
// Auto generated LINQ to Entities domain service:
[EnableClientAccess()]
public partial class ProductService : LinqToEntitiesDomainService<ProductDBEntities>
{
public IQueryable<ANALYSIS_CODES> GetANALYSIS_CODES()
{
return this.ObjectContext.ANALYSIS_CODES;
}
...
}
// My Partial class to add interface
public partial class ANALYSIS_CODES : IHistoricEntity
{}
我正在尝试将这段可工作的代码重构成一个方法:
List<ANALYSIS_CODE> filtered = (from rec in ps.GetANALYSIS_CODES() where rec.ActiveTo == null select rec).ToList()
就像这样:
private List<T> Filter<T>(IQueryable<T> queryable) where T : IHistoricEntity
{
return (from rec in queryable where rec.ActiveTo == null select rec).ToList();
}
// called like this:
List<ANALYSIS_CODE> filtered = Filter(ps.GetANALYSIS_CODES());
这在
ToList
上引发了异常:
但是我从未要求将其转换为无法将类型“ANALYSIS_CODES”转换为类型“IHistoricEntity”。LINQ to Entities仅支持将Entity Data Model原始类型进行转换。
IHistoricEntity
。我只是说T
必须支持IHistoricEntity
。