1

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

}

CompiledQuery.Compile の行で、datacontext に次のようなエラーが表示されます。

「型 'MazikGlobalReviewModel.MazikReviewEntities' は、ジェネリック型またはメソッド 'System.Data.Linq.CompiledQuery.Compile(System.Linq.Expressions.Expression>)' の型パラメーター 'TArg0' として使用できません。暗黙的な参照はありません。 'MazikGlobalReviewModel.MazikReviewEntities' から 'System.Data.Linq.DataContext' への変換."

このエラーは何ですか?また、これを解決するにはどうすればよいですか?

4

1 に答える 1

0

マジクの友達。エラーを見ると、何が問題なのかが非常に明確です。次のコードを見てください。コード内の 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));

詳細については、このリンクを参照してください。

これで問題が解決するはずです。

于 2012-09-13T14:17:03.670 に答える