为什么在DBScaffold(.Net Core MVC)之后没有列出我的存储过程

时间:2019-04-09 00:28:04

标签: c# sql-server asp.net-mvc asp.net-core

我想运行一个参数化的存储过程,该过程根据类型名称(或ID)列出电影。我已经尝试了很多方法来做到这一点,但是我总是以失败告终。基本上,在搭建dbset之后,我的存储过程就不会在模型下列出。

我已经按照this link

中的前六个步骤进行操作
  1. 创建存储过程

  2. 创建了ASP.NET Core MVC项目(我使用了MVC-作者没有使用,但是我认为这样做应该还可以)

  3. 内置解决方案

  4. 已安装的SQL Server程序包(工具,SQL Server,Designer)

  5. 使用以下代码折叠式数据库:

    Scaffold-DbContext "Server=SQL SERVER (e.g localhost);Database=DATABASE (e.g db_core_sp_call);Trusted_Connection=True;user id=SQL USERNAME;password=SQL PASSWORD;"
        Microsoft.EntityFrameworkCore.SqlServer 
        -OutputDir Models/DB
    

除了未列出我的存储过程之外,这些步骤似乎都很成功。有人对我在这里应该做什么有建议吗?我也尝试以不同的方式做到这一点。这似乎是最简单的方法,但我无法跳过第5步。

1 个答案:

答案 0 :(得分:0)

在.net中,核心支架用于将SQL表支架到实体。没有选项可以架置存储过程,但是您可以执行存储过程。跟踪问题:stored procedure mapping support是未解决的问题。

如果您需要使用参数执行存储过程。

用于执行原始SQL查询:

var students = _dbContext.Students.FromSql("EXECUTE dbo.GetStudents {0}",studentId).ToList();

如果您需要在存储过程中执行insert / update / delete命令,请使用ExecuteSqlCommand方法。

_dbContext.Database.ExecuteSqlCommand("InsertStudents @id,@name",
                          new System.Data.SqlClient.SqlParameter("@id", studentId),
                          new System.Data.SqlClient.SqlParameter("@name", name));

这样,您可以在ASP.NET Core中执行存储过程;希望对您有帮助。让我知道是否需要更多信息。 :)