C# Dapper - パラメータを使用してストアド プロシージャを呼び出す方法

この投稿では、Dapper を使用してパラメーターを指定してストアド プロシージャを呼び出す方法を示します。 Id (int) を持つ次のテーブルがあるとします。 ) とテキスト (NVARCHAR(MAX) ) と 1 行:

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

そして、基本的に単純な SELECT * FROM ... をラップする単純なストアド プロシージャ ステートメント:

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

このストアド プロシージャは、次の C# コードで Dapper を使用して実行できます。

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();

上記では、新しい接続を作成して開き、パラメーター (EXEC GetEntity @Id) を使用して SQL ステートメントを作成します。 ) ステートメントの値を含む匿名オブジェクトを作成します。次に Query を実行します メソッドを接続して、ストアド プロシージャの結果を取得します。 Dapper を使用してストアド プロシージャを呼び出す手順はこれですべてです。

ジェネリック型を使用

結果のクラスを作成し、それを Query 呼び出しで汎用パラメーターとして使用することもできます。これにより、結果がそのクラスに自動的にマップされます:

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

そして .Query<MyEntity>() コール:

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

プロシージャに複数のパラメータがある場合、, で複数のパラメータを指定できます :

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

それだけです

これは、Dapper を使用してパラメーターを指定してストアド プロシージャを呼び出す方法に関する投稿でした。お役に立てば幸いです。下にコメントを残してください!