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
ExecuteSqlInterpolatedデータベースに対して指定されたSQLを実行し、影響を受けた行の数を返します。
このメソッドでデータが返されることは期待できません。
このMSDNドキュメントを参照してください。 https://docs.Microsoft.com/en-us/dotnet/api/Microsoft.entityframeworkcore.relationaldatabasefacadeextensions.executesqlinterpolated?view=efcore-3.1