2012-09-13 58 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