C# Petapoco无需等待即可执行存储过程
我在C#WepApi上使用PetaPoco,我必须执行一个存储过程,删除许多表上的行。要删除它的变量的行数(可能很少,也可能太多),因此,有时候,PetaPoco会抛出超时异常。使用PetaPoco是否可以“调用”存储过程并在该过程完成之前关闭连接。存储过程不返回任何值,WebApi也不需要知道它什么时候结束…触发后台任务并从WebApi请求返回需要什么。不要忘记使用以下命令更改请求超时:C# Petapoco无需等待即可执行存储过程,c#,sql-server,stored-procedures,petapoco,C#,Sql Server,Stored Procedures,Petapoco,我在C#WepApi上使用PetaPoco,我必须执行一个存储过程,删除许多表上的行。要删除它的变量的行数(可能很少,也可能太多),因此,有时候,PetaPoco会抛出超时异常。使用PetaPoco是否可以“调用”存储过程并在该过程完成之前关闭连接。存储过程不返回任何值,WebApi也不需要知道它什么时候结束…触发后台任务并从WebApi请求返回需要什么。不要忘记使用以下命令更改请求超时: HttpContext.Server.ScriptTimeout = 50 * 60; // 50 min
HttpContext.Server.ScriptTimeout = 50 * 60; // 50 minutes
以及使用以下命令执行PetaPoco命令超时:
var db = new Database(connectionStringName);
db.OneTimeCommandTimeout = 50;
db.Execute( ... );
您需要的是启动后台任务并从WebApi请求返回。不要忘记使用以下命令更改请求超时:
HttpContext.Server.ScriptTimeout = 50 * 60; // 50 minutes
以及使用以下命令执行PetaPoco命令超时:
var db = new Database(connectionStringName);
db.OneTimeCommandTimeout = 50;
db.Execute( ... );
您不能关闭ADO.NET连接-这将终止内容,或者使内容不完整,或者强制回滚(取决于事务)。异步可能是一个选项。否则,ExecuteReader(在ADO.NET上)通过
CommandBehavior
提供了一个“完成后关闭连接”选项,这就是我想要的真正答案。可以做,也不能做。感谢您无法关闭ADO.NET连接-这将终止连接,或者使连接不完整,或者强制回滚(取决于事务)。异步可能是一个选项。否则,ExecuteReader(在ADO.NET上)通过CommandBehavior
提供了一个“完成后关闭连接”选项,这就是我想要的真正答案。可以做,也不能做。thanksI试图避免OneTimeCommandTimeout,因为我无法预测执行存储过程所需的时间,但看起来我没有其他选择。在ADO中,您可以将CommandTimeout设置为零以获得无限,但PetaPoco仅在大于零时才设置该选项。如果您可以更改源代码,也许这就是解决方案我试图避免OneTimeCommandTimeout,因为我无法预测执行存储过程所需的时间,但看起来我没有其他选择在ADO中,您可以将CommandTimeout设置为零以获得无限,但PetaPoco仅在大于零时设置该选项。如果你能修改源代码,也许这就是解决方案