私はEntity Frameworkを使用してASP.NET MVCでWebアプリケーションをコーディングしています。私のSQL Serverプロシージャは常に-1を返します
私はC#で、このようにプロシージャを呼び出す:context
は、Entity Frameworkのインスタンスである
var result = context.EditTechInfo(user.id, user.telephone, user.email);
。
私は常に-1を返しますが、実行する手順はUPDATE
です。私はRETURN
の代わりにSELECT
を使用して私の価値を返そうとしましたが、役に立たなかった。ここで
は手順です:
ALTER PROCEDURE EditTechInfo
(@tech INT,
@telephone CHAR(10),
@email VARCHAR(64))
AS
BEGIN
SET NOCOUNT ON
DECLARE @result INT = 0
IF EXISTS (SELECT * FROM Techs WHERE id = @tech AND statut = 1)
BEGIN
UPDATE Techs
SET telephone = @telephone, email = @email
WHERE id = @tech
SET @result = 1
END
--ELSE
--BEGIN
--SET @result = -1
--END
SELECT @result
END
-1返された値が...
をコメント化されてできた部分は、私が手続きを返す場合は-1、それはそれが意味することを知っている場合でも、エラーでしたが、私はどこにも理由を理解することはできません...
---- EDIT -------
ここでは、コメントに尋ねたようEFが発生したものです:
public virtual int EditTechInfo(Nullable<int> tech, string telephone, string email)
{
var techParameter = tech.HasValue ?
new ObjectParameter("tech", tech) :
new ObjectParameter("tech", typeof(int));
var telephoneParameter = telephone != null ?
new ObjectParameter("telephone", telephone) :
new ObjectParameter("telephone", typeof(string));
var emailParameter = email != null ?
new ObjectParameter("email", email) :
new ObjectParameter("email", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("EditTechInfo", techParameter, telephoneParameter, emailParameter);
}
あなたの 'IF EXISTS'式は何を返しますか? – Shyju
@Shyju更新ステートメントが実行されるのでtrueを返します。 – Chax
'EditTechInfo'はどのように定義されていますか?私は、EFが直接的に、またはストアドプロシージャとの不一致のために、何かを突っついていると賭けても構わないと思います。 –