简体   繁体   English

如何在ASP.NET Core 2.0 MVC中调用简单的存储过程

[英]How to call a simple stored procedure in ASP.NET Core 2.0 MVC

I just want to call the stored procedure from ASP.NET Core 2.0 MVC. 我只想从ASP.NET Core 2.0 MVC调用存储过程。

I see this type of question many times but every question containing some parameters or calling any by the individual table. 我多次看到这种类型的问题,但每个问题都包含一些参数或由单个表调用。

But nothing that is in use for me. 但是对我来说没有任何用。

Because just I want to call the stored procedure so the whole function will be done by the stored procedure only. 因为只想调用存储过程,所以整个功能只能由存储过程完成。

But I am don't know how to call special stored procedure by the controller. 但是我不知道如何通过控制器调用特殊的存储过程。

Here is my stored procedure: 这是我的存储过程:

create procedure dbbackup
    @BackupSQLScript nvarchar(max),
    @SQLBackupFileName nvarchar(max),
    @DatabaseName sysname,
    @SQLBackupFolder nvarchar(400)
as 
begin
    set @DatabaseName = 'SQL Database'
    set @SQLBackupFolder = 'D:\'

    set @SQLBackupFileName = replace(@DatabaseName, ' ', '-') + convert(varchar, getdate(), 112) + '.bak'

    set @BackupSQLScript = 'BACKUP DATABASE [' + @DatabaseName + ']
                            TO DISK = ''' + @SQLBackupFolder + @SQLBackupFileName + ''''

    print @BackupSQLScript

    exec sp_executesql @BackupSQLScript
end

Just I call this stored procedure from the controller. 我只是从控制器中调用此存储过程。

If you have your context setup, then you can refer to the following snippet to call your stored procedure: 如果您有上下文设置,则可以参考以下代码段调用存储过程:

public async Task<bool> CallMyStoredProcedure()
{
    using (var context = mydbcontext())
    {
        var query = context.mydataset.FromSql("EXECUTE dbo.dbbackup");

        //Based on what is returned from DB, set your bool value
        result=true;
    }

    return result;
}

Obviously, this takes in assumption that you have DBContext setup in your .NET CORE project. 显然,这是假设您在.NET CORE项目中已设置DBContext。 This is a very basic example specific to your case. 这是针对您的案例的非常基本的示例。 You can tailor this method according to your requirement. 您可以根据需要定制此方法。

First Create a class with empty body, but .Net Core may complain about the class not having a primary key so you can add one property decorated with [Key] 首先创建一个带有空主体的类,但是.Net Core可能会抱怨该类没有主键,因此您可以添加一个用[Key]装饰的属性

public class simple {
  [Key]
  public int nothing {get; set;}
}

Then in your dbContext class add it to your DbSet declarations 然后在dbContext类中将其添加到DbSet声明中

public virtual DbSet<simple> Simple { get; set; }

Then in your controller, you simply do this 然后在您的控制器中,您只需执行此操作

public IActionResult SimpleProcedure()
{
   var q = dbcontext.Simple.FromSql("exec dbBackup");
   return OK(q);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM