ADO.net实体模型框架编译查询问题

ADO.net实体模型框架编译查询问题,.net,ado.net-entity-data-model,.net,Ado.net Entity Data Model,我有以下代码,通过这些代码,我试图使用LINQ创建一个CompiledQuery public static Func<DataContext, int, object> GetTeamMembersByTeamId = CompiledQuery.Compile<MazikReviewEntities, int, object>( (context, teamId) => from tp in context.TeamPla

我有以下代码,通过这些代码,我试图使用LINQ创建一个CompiledQuery

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
               });

}
公共静态函数
GetTeamMembersByTeamId=CompiledQuery.Compile(
(context,teamId)=>来自context.TeamPlayers中的tp
在上下文中加入t。tp.TeamId上的团队等于t.ID
在上下文中加入emp。tp.EmployeeId上的员工等于emp.ID
其中tp.TeamId==TeamId&&emp.IsActive==true
按emp.JoiningDate订购
选择新项目团队成员详细信息
{
EmployeeName=emp.FirstName+“”+emp.LastName,
电子邮件=emp.电子邮件,
名称=上下文.Designations.FirstOrDefault(s=>s.ID==emp.DesignationId).Name,
NIC=emp.NIC,
接合日期=emp.JoiningDate,
EmployeeID=emp.ID
});
}
在CompiledQuery.Compile行中,我的datacontext出现了一个错误,指出

“类型'MazikGlobalReviewModel.MazikReviewEntities'不能用作泛型类型或方法'System.Data.Linq.CompiledQuery.Compile(System.Linq.Expressions.Expression>)'中的类型参数'TArg0'。没有从'MazikGlobalReviewModel.MazikReviewEntities'到'System.Data.Linq.DataContext'的隐式引用转换。”


这个错误是什么?如何解决这个问题?

我来自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));
public static readonly Func CompiledSelectSites=
CompiledQuery.Compile(**MyDataContext**c,int conf\u id)=>
(来自c.TBL中的s)
其中s.ID==ID
选择地点);
要了解更多信息,请查看此


这应该可以解决您的问题。

更改了我的代码,但仍然得到相同的错误'public static readonly Func getteammembersbyteam=CompiledQuery.compiled((mazikrevieveEntities context,int teamId,IQueryable obj)=>'调用Compile应该只包含您的输入参数,而不是输出。请查看我提到的代码,然后查看答案中包含的链接。从CompiledQuery中删除您的IQueryable。Compile call.done与链接中提到的完全相同。还根据您的cod更新了我的代码e、 但是不走运。我认为我的DataContext是MazikReviewEntities存在一些问题。我认为在Link2SQL中,我们有从db创建的DataContext。而在ADO.net实体框架中,我们没有DataContext。我不知道您在这里的意思,在这两种情况下,对于Linq,您都从数据库创建文件来处理.dbml,对于英孚。