我正在尝试调用一个测试存储过程,该存储过程需要多个参数,其中一些是可选参数,并且使用EF Core的FromSql方法具有一个输出参数。
存储过程:
Array.prototype.includes
当我去调用过程时,我被迫使用字符串插值法以能够省略可选参数。在这里查看我的另一个问题:Optional Parameters with EF Core FromSql
Create proc dbo.TestOutputParameters
@addressId int,
@city nvarchar(100) = null,
@totalRows int output
AS
BEGIN
select * from crm..address
where adressid = @addressid
and (@city is null or city = @city)
set @totalRows = 5
END
此方法无效,并显示“'必须声明标量变量“ @totalRows”。“”
var addresses = CRMContext.Address.
FromSql($"exec myDB.dbo.TestOutputParameters @addressId = {25}, @totalRows OUTPUT").ToList();
此方法无效,因为它说“必须将参数编号3和后续参数作为'@name = value'传递。使用'@name = value'形式后,所有后续参数都必须在形式为'@name = value'。”
var addresses = CRMContext.Address.
FromSql($"exec myDB.dbo.TestOutputParameters @addressId = {25}, @totalRows OUTPUT", {new SqlParameter("@totalRows", SqlDbType.Int){Direction = ParameterDirection.Ouput}}).ToList();
此方法无效,因为它说“过程或函数'TestOutputParameters'需要参数'@totalRows',但未提供。”