【问题标题】:How to execute stored procedure from a controller [duplicate]如何从控制器执行存储过程[重复]
【发布时间】:2021-05-13 22:00:48
【问题描述】:

我的数据库中有一个现有的存储过程。我也有一个现有的数据库上下文类(仅限片段代码)。

请您帮忙告诉我如何从我的控制器调用我的存储过程?我的模型或DatabaseContext 中缺少什么类或属性?

提前非常感谢

苏通

CREATE PROCEDURE getEmployeeById

@employeeId nvarchar(7)

AS  SELECT * FROM employees WHERE id = @employeeId GO;



namespace Template.Models
{
    public class DatabaseContext : DbContext
    {
        public DatabaseContext() : base("dbConnectionString")
        {

        }
        public DbSet<Parameter> parameter { get; set; }
    //...
    }
}

【问题讨论】:

  • 会指出,通常您可能不会直接从控制器执行存储过程,因为在数据库和控制器之间会有一些其他层跨度>

标签: c# stored-procedures model-view-controller


【解决方案1】:

在实现控制器中,您可以这样做:

var context = new DatabaseContext(); 
var param = new SqlParameter("@employeeId", employeeId);
var parameters = context.parameter.FromSql("getEmployeeById @employeeId", param).ToList();

【讨论】:

  • 您好范,感谢您的评论。这个学生财产来自哪里?以及如何定义这个属性?你能在我上面给定的 DatabaseContext 类中多介绍一下吗?
  • @SothunThay 我已经更正了代码。
  • Pham,感谢您到目前为止的回答。我知道我需要声明另一个属性,比如 public DbSet employee { get;放;在我的 DatabaseContext 类中。我的 Employee 类会是什么样子,因为如果找到记录,我希望我的存储过程返回 true,如果没有找到记录,则返回 false
  • 欢迎您的兄弟
猜你喜欢
  • 2018-02-08
  • 2016-10-15
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
相关资源
最近更新 更多