2014-03-30 163 views
0

嗨即時啓動一個新的項目,我想添加一些編譯後的查詢到我的達爾,但我得到這個錯誤,我似乎無法弄清楚爲什麼。我不能在這裏找到任何ADO.NET實體框架編譯查詢

類型「DataAccessLayer.entities」不能在泛型類型或方法可以作爲類型參數「TArg0「System.Data.Objects.CompiledQuery.Compile(系統任何答案.Linq.Expressions.Expression>)」。沒有從'DataAccessLayer.entities'到'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

您在上述lambda表達式中定義的'entities'類型是否來自DbContext? –

+0

是的它...... –

回答

1

的CompiledQuery只有ObjectContext的工作。從EF 4或4.1開始,實體開始從DbContext而不是ObjectContext派生。

您必須使用最新的EF框架(使用DbContext),並且此查詢以前會工作一段時間(ObjectContext)。

讓我們知道您的.NET & EF版本。較新的.NET和EF版本支持編譯查詢的自動緩存,因此顯式緩存可能會變得沒有意義。

+0

即時通訊使用5.0所以我想多數民衆贊成爲什麼謝謝 –