【发布时间】:2012-04-27 19:07:14
【问题描述】:
我有这门课(你可以看到它的全部内容here)...
internal class BaseRepository<I, C> : IRepository<I>
where I : class, IBaseObject
where C : BaseObject
{
private Context _context;
public IEnumerable<I> FindBy(Expression<Func<I, bool>> predicate)
{
return _context.Set<C>().ToList().Cast<I>().AsQueryable().Where(predicate);
}
// other methods.
}
我怎样才能做到这一点,这样我就不必打电话给.ToList(),我相信这会导致EF返回.Set<C>()中的所有内容
在没有.ToList() 和.AsQueryable() 的情况下使用它会导致错误:
System.NotSupportedException:无法将类型“Sln.DAL.Sql.Entities.Project”转换为类型“Sln.DAL.Entities.IProject”。 LINQ to Entities 仅支持转换 EDM 基元或枚举类型。
【问题讨论】:
-
介意告诉我们您为什么需要
ToList吗?如果删除它会发生什么? -
BaseObject 是否总是从 I 派生的?
-
是的。 BaseObject 实现 IBaseObject
-
菲尔,再次添加您的答案。它奏效了。
标签: c# linq entity-framework