Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

160
Views
Procedimiento almacenado devuelve -1 para todos los casos en el marco de la entidad
CREATE PROC spIsValidUser @UserName varchar(50), @Password varchar(50) AS IF Exists(SELECT * FROM Users where UserName=@UserName and Password=@Password) BEGIN return 0 END ELSE BEGIN return 1 END GO

Creé este Stored Procedure y trato de llamar a este Stored Procedure utilizando el marco de la entidad. A continuación se muestra el código escrito en C#.

 MyBusEntities db = new MyBusEntities(); int empQuery = db.spIsValidUser("abc", "abc@123");

Stored Procedure spIsValidUser devuelve -1 en todos los casos. Por favor, hágamelo saber error.

EDITAR : de acuerdo con la respuesta dada, el procedimiento de almacenamiento no se usa declaración de devolución porque Entity Framework no puede admitir valores escalares de retorno de procedimiento almacenado de forma inmediata. Déjame saber cómo puedo enviar datos escalares desde el Stored Procedure .

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Su procedimiento almacenado actualmente devuelve un valor escalar . Use los siguientes pasos para resolver este problema:

  • Cambie su procedimiento almacenado de esta manera (no use la palabra clave return en el procedimiento almacenado para devolver el valor, Entity Framework no puede admitir valores escalares de retorno de procedimiento almacenado listos para usar. PERO hay una solución):

     ALTER PROC spIsValidUser @UserName varchar(50), @Password varchar(50) AS SELECT Count(*) FROM Users where UserName= @UserName and Password= @Password return
  • Debe importar el procedimiento almacenado como una Function . Haga clic con el botón derecho en el área del espacio de trabajo de su modelo de Entidad y elija Add -> Function Import .

  • En el cuadro de diálogo Add Function Import , ingrese el nombre al que desea que se haga referencia a su procedimiento almacenado en su modelo, elija su procedimiento de la lista desplegable y elija el valor de retorno del procedimiento para que sea escalar .

  • Finalmente escribe tu código así:

     MyBusEntities db = new MyBusEntities(); System.Nullable<int> empQuery = db.spIsValidUser("abc", "abc@123").SingleOrDefault().Value; MessageBox.Show(empQuery.ToString());// show 1 if Exist and 0 if not Exist

Editar: creo que el soporte de los valores de retorno del procedimiento almacenado depende de la versión de Entity Framework. Además, Entity Framework no tiene soporte para procedimientos almacenados enriquecidos porque es un ORM, no un reemplazo de SQL.

over 4 years ago · Santiago Trujillo Report

0

Has probado:

 CREATE PROC spIsValidUser @UserName varchar(50), @Password varchar(50) AS IF Exists(SELECT * FROM Users where UserName=@UserName and Password=@Password) BEGIN SELECT 0 END ELSE BEGIN SELECT 1 END GO
over 4 years ago · Santiago Trujillo Report

0

¿Ha importado sus procedimientos almacenados en el modelo EF correctamente? ¿Y está configurando el tipo de retorno correcto para los procedimientos almacenados?

Hay 4 tipos de devolución posibles que puede configurar para sus procedimientos. Los tipos de devolución posibles son:

  1. ninguna
  2. escalares
  3. Complejo
  4. Entidades

necesita establecer el tipo de retorno de los escalares.

si no sabe cómo configurar el tipo de retorno, aquí está el tutorial completo http://www.binaryintellect.net/articles/30738a7c-5176-4333-aa83-98eab8548da5.aspx

rápido ejemplo.

 CREATE PROCEDURE CustOrderCount @CustomerID nchar(5) AS BEGIN SELECT COUNT(*) FROM ORDERS WHERE CUSTOMERID=@CustomerID; END NorthwindEntities db = new NorthwindEntities(); var count = db.CustOrderCount("ALFKI"); int ordercount = count.SingleOrDefault().Value;

esto devolverá el recuento de pedidos.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!