0

サイトに問題があります。ストアドプロシージャに小さな変更を加えました。SSMSでストアドプロシージャをテストしてから、Entity Frameworkを更新して、追加した2つの新しい行を返しました。

しかし、ストアドプロシージャを含むページをロードすると、ページがタイムアウトします。本当に変だと思いました。そのため、SQLServerでSQLServer Profilerを実行しましたが、本当に驚きました。

Entry Frameworkexec[dbo]を介してMVC3から実行します。[zzz]@LogDate = '2012-11-13 00:00:00'、@ UserID = 1、@ LocationID = 76、@ CategoryID =NULL-CPU59469-読み取り101693134-期間-60091

プロファイラーからexecuteステートメントをコピーし、SSMSで直接実行すると、次の結果が得られます。

SSMSexec[dbo]から実行します。[zzz]@LogDate = '2012-11-13 00:00:00'、@ UserID = 1、@ LocationID = 76、@ CategoryID =NULL-CPU47-60185を読み取ります-期間- 151

同じSPからこのように根本的に異なる結果が得られる理由を誰かが知っていますか?

4

1 に答える 1

0

気にしないでください...それを理解しました。Entity Framework は、実際には最後の値に null を渡していませんでした。次の行をストアド プロシージャに追加すると、Web サイトで動作するようになりました。

IF(@CategoryID = '')
    SET @CategoryID = NULL

SP が空の文字列として受信していたときに、プロファイラーが NULL を表示していた理由がわかりません。コードでは、null として渡していました。

var dle = context.dEGet(ld,userID,lastLocationID,null).ToList();
于 2012-12-13T13:48:44.000 に答える