0

我们不得不将使用 EF5 的项目降级到 EF4,并且正在努力将存储过程纳入 EF 模型。

该过程返回一个表:

  -- A table to hold the results
  DECLARE @Result TABLE
  (
      ActionType    CHAR(1),
      ChangedBy     VARCHAR(50),
      ChangedDate   DATETIME,
      FieldName     VARCHAR(150),
      OriginalValue VARCHAR(100),
      NewValue VARCHAR(100),
      ForeignKeyName VARCHAR(50),
      ForeignKeyValue VARCHAR(15)
  )

然后添加记录,并返回:

  -- Return the result
  SELECT * FROM @Result

但是,添加 proc 似乎非常不同。存储过程未显示在我们的实体框架上下文中。

所以我们按照这里显示的例子:http: //msdn.microsoft.com/en-us/library/bb896231.aspx

但是,我们选择返回类型为“复杂”,但是当我们单击“获取列信息”时,我们会遇到以下错误:

尝试获取列信息时发生“Microsoft.SqlServer.Management.Sdk.Sfc.EnumeratorException”类型的异常。异常消息是:ExecuteScalar 需要一个打开且可用的连接。连接的当前状态为关闭。捕获的内部异常属于“System.InvalidOperationException”类型,并带有以下错误消息:“ExecuteScalar 需要一个打开且可用的连接。连接的当前状态是关闭的。'。

谁能帮助解决这个错误,或者解释一个更好的方法来引用 EF4.4 中的存储过程?

4

1 回答 1

1

解决了!不要使用 SELECT *!

-- Return the result
  SELECT       
      ActionType,
      ChangedBy,
      ChangedDate,
      FieldName,
      OriginalValue,
      NewValue,
      ForeignKeyName,
      ForeignKeyValue
  FROM @Result
于 2013-09-27T04:33:09.647 回答