【问题标题】:Insert, Update, Delete query in one Stored Procedure with Entity Framework [closed]使用实体框架在一个存储过程中插入、更新、删除查询[关闭]
【发布时间】:2018-03-30 07:32:07
【问题描述】:

我在一个Stored Procedure 中创建了多个查询。检查以下示例:

IF(@Type='add')
BEGIN
   Insert query
END

IF(@Type='get')
BEGIN
   Select query
END

我在我的MVC 项目中使用Entity Framework。所以,我收到错误:does not have a corresponding column in the data reader with the same name.

是否需要为每个查询创建不同的Stored Procedures?我如何实现我想要做的任何事情?

【问题讨论】:

  • 这是关于选择你想写的方式。
  • 您能说明您是如何设置query 值的吗?
  • @S.Dav 我正在添加实体框架模型(Ado.NET 实体数据模型和数据库中的 EF 设计器)。
  • 我个人会把它们分开
  • 同意@juharr,将它们分开,并以这种方式命名它们,尽量保持每个程序的一个目的,从长远来看,让生活更简单。

标签: c# sql-server asp.net-mvc entity-framework stored-procedures


【解决方案1】:

您得到的错误与过程中包含的查询无关,您可以在过程中同时包含插入和选择查询。

select查询必须在insert之后,这样存储过程和实体框架返回的查询结果才能正确映射到模型。

我认为另一个问题是选择查询不返回完整的实体模型,我认为您只返回了特定列而不是所有列。

我建议您将它们拆分为两个不同的过程,以便选择查询可以映射到一个模型。并且插入查询无需选择即可正常工作。

【讨论】:

  • 在我上面的存储过程中,如果我在插入语句之后添加选择查询,那么它工作正常。 IF(@Type='add') BEGIN Insert query Select query where id=last id END
  • 是的,必须在插入之后才能从存储过程返回结果。
  • @JeetenParmar - 看我更新
  • 如果我不想在插入语句后返回任何东西怎么办?
  • @JeetenParmar 或者把它们做成两个不同的程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
  • 2014-12-09
  • 2014-06-23
  • 1970-01-01
  • 2018-01-19
相关资源
最近更新 更多