Esta publicación le muestra cómo llamar a un procedimiento almacenado con un parámetro usando Dapper. Si tenemos la siguiente tabla con un Id (int
) y un texto (NVARCHAR(MAX)
) y una fila:
CREATE TABLE [dbo].[MyEntities](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Text] [nvarchar](max) NOT NULL,
CONSTRAINT [PK_MyEntities] PRIMARY KEY CLUSTERED
(
[Id] ASC
)
)
INSERT INTO [dbo].[MyEntities]
([Text])VALUES ('This is a text!')
Y un procedimiento almacenado simple que básicamente envuelve un SELECT * FROM ...
simple declaración:
CREATE PROC GetEntity @Id int
AS
SELECT * FROM MyEntities e
WHERE [id] = @Id
Podemos ejecutar este procedimiento almacenado usando Dapper con la siguiente pieza de código C#:
using var con = new SqlConnection("<Your connectionstring>");
con.Open();
var sql = "EXEC GetEntity @Id";
var values = new { Id = 0 };
var getEntityResult = con.Query(sql, values).ToList();
En lo anterior, creamos y abrimos una nueva conexión, hacemos una declaración SQL con un parámetro (EXEC GetEntity @Id
) y creamos un objeto anónimo que contiene el valor de nuestra declaración. Luego ejecutamos el Query
método en nuestra conexión y obtener el resultado de nuestro procedimiento almacenado. Eso es todo lo que hay que hacer para llamar a un procedimiento almacenado usando Dapper.
Con un tipo genérico
También podemos crear una clase para el resultado y usarla en nuestra llamada Query como un parámetro genérico. Esto asigna automáticamente el resultado a esa clase:
class MyEntity
{
public int Id { get; set; }
public string Text { get; set; }
}
Y el .Query<MyEntity>()
llamar:
var sql = "EXEC GetEntity @Id";
var values = new { Id = 0 };
var results = con.Query<MyEntity>(sql, values);
Si nuestro procedimiento tiene varios parámetros, podemos proporcionar varios parámetros con un ,
:
var sql = "EXEC GetEntity @Id, @Text";
var values = new { Id = 7 , Text = "This is a text!"};
var results = con.Query(sql, values);
Eso es todo
Esta fue una publicación sobre cómo llamar a un procedimiento almacenado con un parámetro usando Dapper. Espero que te haya resultado útil, ¡por favor deja un comentario abajo!