web-dev-qa-db-ja.com

Dot Net Core 3.1でFromSqlInterpolated / Database.ExecuteSqlInterpolatedを使用して、出力パラメーターでストアドプロシージャを実行する方法

Dot Netコア3.1で、出力パラメーターを使用してストアドプロシージャを実行したいと思います。 ExecuteSqlInterpolatedクラスのDatabaseFacade拡張メソッドを使用しています。

従業員の数を取得するC#コード。

string deptName="IT";
int? employeeCount = null;
Database.ExecuteSqlInterpolated($"exec dbo.usp_GetEmpCountByDept {deptName}, {employeeCount} out");

実行後、employeeCountはnullおよび-1は戻り値です。一部の人々は問題を再現するためにストアドプロシージャコードを要求したので、私は以下のようにプロシージャを保存しました

CREATE PROCEDURE usp_GetEmpCountByDept
@Dept nvarchar(20),
@EmpCount int Output
AS
BEGIN
SELECT @EmpCount = COUNT(Id)
FROM [dbo].[Employees] 
WHERE Department = @Dept
END
5
Vishal P

ExecuteSqlInterpolatedデータベースに対して指定されたSQLを実行し、影響を受けた行の数を返します。

このメソッドでデータが返されることは期待できません。

このMSDNドキュメントを参照してください。 https://docs.Microsoft.com/en-us/dotnet/api/Microsoft.entityframeworkcore.relationaldatabasefacadeextensions.executesqlinterpolated?view=efcore-3.1

1
Ajith