2012-09-13 60 views
1

我有下面的代碼,我試圖用LINQ創建一個CompiledQuery。ADO.net實體模型框架遵從查詢問題

public static Func<DataContext, int, object> 
     GetTeamMembersByTeamId = CompiledQuery.Compile<MazikReviewEntities, int, object>(
      (context, teamId) => from tp in context.TeamPlayers 
            join t in context.Teams on tp.TeamId equals t.ID 
            join emp in context.Employees on tp.EmployeeId equals emp.ID 
            where tp.TeamId == teamId && emp.IsActive == true 
            orderby emp.JoiningDate 
            select new ProjTeamMemberDetails 
            { 
             EmployeeName = emp.FirstName + " " + emp.LastName, 
             Email = emp.Email, 
             Designation = context.Designations.FirstOrDefault(s => s.ID == emp.DesignationId).Name, 
             NIC = emp.NIC, 
             JoiningDate = emp.JoiningDate, 
             EmployeeID = emp.ID 
       }); 

} 

在行CompiledQuery.Compile我正在爲我的DataContext的錯誤,指出,

「類型‘MazikGlobalReviewModel.MazikReviewEntities’不能在泛型類型作爲類型參數‘TArg0’或方法'System.Data.Linq.CompiledQuery.Compile(System.Linq.Expressions.Expression>)'。沒有從'MazikGlobalReviewModel.MazikReviewEntities'到'System.Data.Linq.DataContext'的隱式引用轉換。

任何人都可以請指定我什麼是這個錯誤以及如何解決這個問題。

任何幫助將高度appriciated。

謝謝

回答

0

我的朋友從Mazik。如果你仔細觀察這個錯誤,那就很清楚哪裏出了問題。 看看下面的代碼。什麼是你的代碼中的datacontext和MazikReviewEntities。確保它們屬於同一類型。

public static readonly Func<**MyDataContext**, int, IQueryable<tblSomething>> CompiledSelectSites = 
       CompiledQuery.Compile((**MyDataContext** c, int conf_id) => 
         (from s in c.TblSomething 
         where s.ID == id 
         select site)); 

欲瞭解更多關於此link

這應該可以解決您的問題。

+0

改變我的代碼,但仍然得到同樣error'public靜態只讀Func鍵> GetTeamMembersByTeamId = CompiledQuery.Compile((MazikReviewEntities上下文,整數teamId,IQueryable的 OBJ) = >' – user1379383

+0

對Compile的調用應該只包含輸入參數而不是輸出,請查看我提到的代碼,然後通過答案中包含的鏈接,從CompiledQuery.Compile調用中移除IQueryable 。 – Tabish

+0

做了完全相同的鏈接中提到。也更新我的代碼根據您的代碼。但沒有運氣。我認爲有一些問題與我的DataContext這是MazikReviewEntities – user1379383