Ich versuche, eine gespeicherte Prozedur in SQL Server aus einem Datenbank zuerst MVC Entity Framework-Projekt aufzurufen, aber die Rückgabewerte gibt immer -1 zurück.Gespeicherte Prozedur gibt immer -1 zurück (asp.net MVC, Entität, SQL)
Ich habe viele verschiedene Möglichkeiten versucht, dies zu beheben und waren bisher nicht erfolgreich. Ich habe unten meinen Code aufgelistet, den ich für meinen relevanten Code halte. Lassen Sie mich wissen, wenn mehr Code erforderlich ist. Danke an alle, die helfen können!
Dies ist nur mein Testcode, um zu sehen, ob es richtig funktioniert.
public ActionResult Index()
{
Cust_Entities cse = new Cust_Entities();
if (cse.DoesCustomerNumberExist("1") == 1)
{
return RedirectToAction("Index", "Home");
}
else
{
return RedirectToAction("About", "Home");
}
}
public virtual int DoesCustomerNumberExist(string customer_Number)
{
var customer_NumberParameter = customer_Number != null ?
new ObjectParameter("Customer_Number", customer_Number) :
new ObjectParameter("Customer_Number", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("DoesCustomerNumberExist", customer_NumberParameter);
}
SQL Server gespeicherte Prozedur Code:
ALTER PROCEDURE [dbo].[DoesCustomerNumberExist]
@Customer_Number VARCHAR(20)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Exists INT
IF EXISTS(SELECT Customer_Number
FROM business_Final.dbo.AR_Customer
WHERE Customer_Number = @Customer_Number)
BEGIN
SET @Exists = '1'
END
ELSE
BEGIN
SET @Exists = '0'
END
RETURN @Exists
END
Siehe https://stackoverflow.com/questions/10289626/execute-stored-proc-in-executestorequery-ef-is-this-a-bug-in-ef – Serg
Seitennotiz: seit '@ Exists 'ist deklariert als 'INT' sollten Sie * NOT * keine einfachen Anführungszeichen verwenden (da Sie mit einem ** numerischen ** Wert arbeiten - keine Zeichenkette), wenn Sie Werte setzen - benutzen Sie 'SET @Exists = 1' - keine einfachen Anführungszeichen, keine unnötige Konvertierung von String zu Int usw. –