嗨我启动一个新项目,我想添加一些编译查询到我的dal但我得到这个错误我似乎无法弄清楚为什么。我无法在这里找到任何答案
类型' DataAccessLayer.entities'不能用作类型参数' TArg0'在泛型类型或方法中,System.Data.Objects.CompiledQuery.Compile(System.Linq.Expressions.Expression>)'。来自' DataAccessLayer.entities'没有隐式参考转换。 to' System.Data.Objects.ObjectContext'。
这是我的代码
public static Func<entities, string, IQueryable<user>>
UserById = CompiledQuery.Compile((entities db, string id) => db.users.Where(u => u.id == id));
这些是我使用的命名空间
using System;
using System.Data.Objects;
using System.Linq;
答案 0 :(得分:1)
CompiledQuery仅适用于ObjectContext。启动EF 4或4.1,实体开始从DbContext而不是ObjectContext派生。
您必须使用最新的EF框架(使用DbContext),此查询之前会有一段时间(ObjectContext)。
让我们知道您的.NET&amp; EF版本。较新的.NET和EF版本支持自动缓存已编译的查询,因此显式缓存可能没有实际意义。