こんにちは、エンティティ選択クエリでストアド プロシージャを呼び出そうとしています。しかし、私はエラーが発生しました。まずは外側の手順をチェック。
var img = dc.get_User_Image(1).FirstOrDefault();
var Task = from tbl_Task tsk in dc.tbl_Task
join tmp in dc.tbl_TaskAssignment
on tsk.TaskID equals tmp.TaskID into jointable
from tmp in jointable.DefaultIfEmpty()
join ct in dc.tbl_User on tmp.AssignTo equals ct.UserID
where tsk.IsDeleted == false && tsk.TaskID == IntTaskID &&
tmp.IsDeleted == false
select new
{
TaskID = tsk.TaskID,
TaskDesc = tsk.Remarks,
TaskTitle = tsk.TaskTitle,
TaskEmpName = tmp.tbl_User.tbl_Contact.FirstName_EN,
TaskEmpID = tmp.AssignTo,
profileImage = "",
Priority = tsk.Priority,
TaskCompletedPercentage = tmp.CompletedPercentage
};
エラーなし。結果を得た。ただし、コードを次のように変更します。
var Task = from tbl_Task tsk in dc.tbl_Task
join tmp in dc.tbl_TaskAssignment on tsk.TaskID equals tmp.TaskID into jointable
from tmp in jointable.DefaultIfEmpty()
join ct in dc.tbl_User on tmp.AssignTo equals ct.UserID
where tsk.IsDeleted == false && tsk.TaskID == IntTaskID &&
tmp.IsDeleted == false
select new
{
TaskID = tsk.TaskID,
TaskDesc = tsk.Remarks,
TaskTitle = tsk.TaskTitle,
TaskEmpName = tmp.tbl_User.tbl_Contact.FirstName_EN,
TaskEmpID = tmp.AssignTo,
profileImage = dc.get_User_Image(tmp.AssignTo).FirstOrDefault(),
Priority = tsk.Priority,
TaskCompletedPercentage = tmp.CompletedPercentage
};
エラーが発生しました
LINQ to Entities はメソッド 'System.Data.Objects.ObjectResult
1[System.String] get_User_Image(System.Nullable
1[System.Int64])' メソッドを認識せず、このメソッドはストア式に変換できません。
" dc.get_User_Image " は "ユーザー ID" (Int) を受け取り、イメージ パス (文字列) を返します。最初のコードでは、関数を個別にチェックしています。それはうまくいきます。クエリの選択で、これを呼び出します->「profileImage = dc.get_User_Image(tmp.AssignTo).FirstOrDefault()」。エラーをスローしました
私はなぜ理解できませんか?助けてください。