【发布时间】:2016-03-10 18:05:24
【问题描述】:
我的泛型类中有以下方法:
// This is the class declaration
public abstract class BaseService<TEntity, TKey> : IBaseService<TEntity, TKey> where TEntity : class, IEntity<TKey>
// The Method
public IQueryable<TEntity> GetActive()
{
if (typeof(IActivable).IsAssignableFrom(typeof(TEntity)))
{
return this.repository.Get().Cast<IActivable>()
.Where(q => q.Active)
.Cast<TEntity>();
}
else
{
return this.Get();
}
}
这是界面:
public interface IActivable
{
bool Active { get; set; }
}
基本上,TEntity 是一个实体 (POCO) 类,如果它们具有 Active 属性,则可以实现 IActivable。我希望该方法返回所有具有Active 值的记录为真。但是,我有这个错误:
无法将类型“WebTest.Models.Entities.Product”转换为类型 'Data.IActivable'。 LINQ to Entities 仅支持转换 EDM 原始类型或枚举类型。
我明白为什么会出现这个错误。但是关于 SO 的文章对我的情况没有任何有效的解决方案。是否可以通过Cast 或任何其他方式实现?注意:我不想转换成IEnumerable,我想保留IQueryable。
【问题讨论】:
标签: c# entity-framework linq