ADO.net实体模型框架编译查询问题
我有以下代码,通过这些代码,我试图使用LINQ创建一个CompiledQueryADO.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
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,对于英孚。