C# Dapper - Come chiamare una stored procedure con un parametro

C# Dapper - Come chiamare una stored procedure con un parametro

Questo post mostra come chiamare una stored procedure con un parametro usando Dapper. Se abbiamo la seguente tabella con un Id (int ) e un testo (NVARCHAR(MAX) ) e una riga:

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!')

E una semplice procedura memorizzata che fondamentalmente racchiude un semplice SELECT * FROM ... dichiarazione:

CREATE PROC GetEntity @Id int
AS
SELECT * FROM MyEntities e
WHERE [id] = @Id

Possiamo eseguire questa procedura memorizzata usando Dapper con il seguente pezzo di codice 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();

In quanto sopra creiamo e apriamo una nuova connessione, facciamo un'istruzione SQL con un parametro (EXEC GetEntity @Id ) e creiamo un oggetto anonimo che contiene il valore per la nostra dichiarazione. Quindi eseguiamo il Query metodo sulla nostra connessione e ottenere il risultato della nostra procedura memorizzata. Questo è tutto ciò che serve per chiamare una stored procedure utilizzando Dapper.

Con un tipo generico

Possiamo anche creare una classe per il risultato e usarla nella nostra chiamata Query come parametro generico. Questo mappa automaticamente il risultato a quella classe:

class MyEntity
{
    public int Id { get; set; }
    public string Text { get; set; }
}

E il .Query<MyEntity>() chiama:

var sql = "EXEC GetEntity @Id";
var values = new { Id = 0 };
var results = con.Query<MyEntity>(sql, values);

Se la nostra procedura ha più parametri possiamo fornire più parametri con un , :

var sql = "EXEC GetEntity @Id, @Text";
var values = new { Id = 7 , Text = "This is a text!"};
var results = con.Query(sql, values);

Questo è tutto

Questo era un post su come chiamare una stored procedure con un parametro usando Dapper. Spero che ti sia stato utile, per favore lascia un commento qui sotto!