Datareader与指定的“结果集复杂类型”不兼容。该类型的成员

时间:2018-10-17 21:08:24

标签: entity-framework

我有一个存储过程,用于更新MS SQL Server数据库中表中的日期列。此存储过程没有任何复杂的逻辑。它使用输入参数中传递的值对date列进行简单的更新。当存储过程执行从try..catch异常处理块中引发异常时,该存储过程在成功执行后不会返回任何结果集,但会返回包含几列名称为ErrorNumber,ErrorSeverity等的结果集。

我正在使用DB First实体方法;我已经从asp.net MVC Web应用程序为此存储过程更新了实体数据模型。实体框架设计器为此存储过程上的返回类型生成了一个复杂类型,并为catch块中返回的列列表中的每个列提供了一个属性。当我使用有效的输入参数从asp.net MVC应用程序调用存储过程时,遇到了“ Datareader is incompatible exception”。我知道此异常是由实体框架触发的,因为存储过程的执行不会返回结果集,并且框架期望返回名称为“ ErrorNumber”的列。我直接使用具有必需有效参数值的db上下文实例调用存储过程。 例如db.UpdateProcedure(dueDate)。我没有使用数据表从数据读取器加载数据。我知道将结果集加载到数据表中不会导致此异常。

对存储过程进行较小的更改以成功执行后返回@@ rowcount,应用程序在此存储过程调用时未引发此异常。

我想知道是否有更好的方法来处理这种情况,而无需更新存储过程以返回@@ rowcount。

我正在使用设计者从数据库生成的实体模型;自动生成实体模型后,我没有对架构进行任何手动更改。老实说,我不喜欢对模式自动生成后进行手动更改。

从实体设计器更新模型时,在实体架构更新期间是否缺少此存储过程以生成正确的复杂类型的任何信息?

存储过程是否在异常发生时返回结果集,而在成功执行后不返回任何结果,从而导致更新实体架构的过程出现任何问题?

非常感谢您的帮助。

谢谢。

0 个答案:

没有答案