ADO.NET Entityframework编译查询

时间:2014-03-30 22:18:55

标签: c# asp.net linq entity-framework ado.net

嗨我启动一个新项目,我想添加一些编译查询到我的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;

1 个答案:

答案 0 :(得分:1)

CompiledQuery仅适用于ObjectContext。启动EF 4或4.1,实体开始从DbContext而不是ObjectContext派生。

您必须使用最新的EF框架(使用DbContext),此查询之前会有一段时间(ObjectContext)。

让我们知道您的.NET&amp; EF版本。较新的.NET和EF版本支持自动缓存已编译的查询,因此显式缓存可能没有实际意义。