Ich codiere eine Webanwendung mit ASP.NET MVC mit Entity Framework.Meine SQL Server-Prozedur gibt immer -1
Ich nenne das Verfahren, wie dies in C#:
var result = context.EditTechInfo(user.id, user.telephone, user.email);
Wo context
die Instanz Entity Framework ist.
Ich habe eine Prozedur, die immer -1 zurückgibt, aber es führt die UPDATE
es soll tun. Ich habe versucht, meinen Wert unter Verwendung SELECT
anstelle RETURN
aber vergebens zurückzugeben. Hier
ist das Verfahren:
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
Auch wenn der Teil, wo -1 der zurückgegebene Wert wird kommentiert werden kann ...
Ich weiß, dass, wenn eine Prozedur gibt -1 es bedeutet, dass es ein Fehler war, aber ich kann nicht verstehen, wo und warum ...
---- EDIT -------
Wie im Kommentar gefragt, hier ist was EF generiert:
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);
}
Was ist Ihr 'IF EXISTS' Ausdruck? – Shyju
@Shyju Von was ich abziehe, gibt es wahr zurück, weil die Update-Anweisung ausgeführt wird – Chax
Wie ist 'EditTechInfo' definiert?Ich wette, dass EF etwas vermasselt, entweder direkt oder wegen einer Diskrepanz zwischen ihm und Ihrer gespeicherten Prozedur. –