【问题标题】:Call Stored Procedures from Entity Framework return value from temp tables从实体框架调用存储过程从临时表返回值
【发布时间】:2015-07-23 19:24:41
【问题描述】:

我正在使用 ASP.NET MVC 4.5 和 EF。我将一些存储过程导入到我的 ADO.NET 实体数据模型中。我有我的.edmxXX.tt 和我的StoreProcedure_Result.cs

但是有一个存储过程没有_result.cs 文件

这是因为存储过程返回

 select from #TempTable

当我想导入该函数以创建复杂类型时,它发现该函数没有返回任何值..

我认为从临时表返回值是不允许的。

有什么办法可以解决吗?

谢谢

【问题讨论】:

  • 该临时表是在内部存储过程中创建的吗?或者它在存储过程运行之前是否存在?另外:如果您使用select (list of columns) from #TempTable(而不是select * ...,这是我假设您正在做的事情)怎么办 - 在尝试导入该存储过程并为其结果集创建复杂类型时,这会改变什么吗?
  • 我使用 select val1, val2 from #temptable... 我在 de SP 中创建它...我解决它在 SP 中放置“SET FMTONLY OFF;” .. 无论如何,其他解决方案可能可能..谢谢..

标签: asp.net-mvc entity-framework stored-procedures ado.net-entity-data-model


【解决方案1】:

根据我的个人经验,如果您在存储过程中使用 #temp 或 ##temp 表并从 MVC 实体框架 (.edmx) 调用该过程,则它将无法正常工作,并且将始终返回 -1。

可以有两种解决方案:

  1. 修改存储过程,将#temp 或##temp 表替换为其他一些具体逻辑。然后更新 .edmx 然后再次尝试调用该过程。

  2. 或者一种简单的解决方案是使用传统的 ADO.NET(使用 SQLConnection/SQLCommand 对象)调用特定的存储过程,并在 DataSet 或 DataTable 中获取返回的表值。

谢谢

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-06
  • 1970-01-01
相关资源
最近更新 更多