gpt4 book ai didi

c# - 如何使用EF执行带有输入和输出参数的存储过程?

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:04 24 4
gpt4 key购买 nike

我使用的是 EF 代码优先方法,并且我使用迁移创建了存储过程,如下所示:

public override void Up()
{
Sql(@"CREATE TYPE IdsList AS TABLE
(
Id Int
)
GO

Create Procedure getChildIds(
@IdsList dbo.IdsList ReadOnly
)
As
Begin
WITH RecursiveCTE AS
(
SELECT Id
FROM dbo.PhysicalObjects
WHERE ParentId in (Select * from @IdsList)
--Where Id=108
UNION ALL

SELECT t.Id
FROM dbo.PhysicalObjects t
INNER JOIN RecursiveCTE cte ON t.ParentId = cte.Id
)
SELECT * FROM RecursiveCTE
End");
}

public override void Down()
{
Sql(@"Drop Type IdsList
Go
Drop Procedure getChildIds");
}

现在,如果我转到 sql server management studio 并执行以下脚本:

Declare @Ids dbo.IdsList

Insert into @Ids
SELECT 1

Exec getChildIds @Ids

它将成功执行,但现在我正尝试按如下方式执行该存储过程:

 var idsList = new SqlParameter {ParameterName = "idsList",  Value = new int[] { 1,2,3,4,5} };

var idParams = new SqlParameter("idParams", SqlDbType.Structured)
{
Direction = System.Data.ParameterDirection.Output
};

var results = dbContext.Database.SqlQuery<int>("getChildIds @idsList, @idParams out", idsList,idParams) ;

var idsResult = (List<int>)idParams.Value;

它不返回任何东西。

那么如何执行带有表类型输入和输出参数的存储过程呢?

最佳答案

关于c# - 如何使用EF执行带有输入和输出参数的存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48866189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com