我有以下界面:
public interface IInactive
{
bool inactive { get; set; }
}
以及实现该接口的几个对象(实体框架实体),例如:
public class Order : IInactive
{
[Key]
[Required]
public Guid orderId { get; set; }
...
public bool inactive { get; set; }
}
我正在尝试实现一个通用方法,该方法可用于仅返回“活动”记录(即非活动== false)。它将被称为如下:
var query = GetAllActive<Order>();
我的这个通用方法的代码如下所示:
public IQueryable<T> GetAllActive<T>() where T : class
{
DbSet<T> dbSet = this._db.Set<T>();
IQueryable<IInactive> query2 = dbSet as IQueryable<IInactive>;
query2 = query2.Where(w => !w.inactive);
return (DbSet <T>)query2;
// System.InvalidCastException: 'Unable to cast object of type 'System.Data.Entity.Infrastructure.DbQuery`1[Portal.Domain.Entities.Interfaces.IInactive]' to type 'System.Data.Entity.DbSet`1[Portal.Domain.Entities.Order]'.'
}
有只小跳蛙
相关分类