我有一个使用带有 WCF RIA 的实体框架的 Silverlight 4 应用程序。
突然之间,一些(我认为是 3 个)存储过程停止工作。每个用户都报告相同的问题 当 Silverlight 应用程序尝试执行相关查询时,所有用户都会收到错误消息。
查询“SomeStoredProcedure”的加载操作失败。执行命令定义时发生错误。有关详细信息,请参阅内部异常。InnerException 消息:列名“someColumn”无效。
在 System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,CommandBehavior 行为)
在 System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext 上下文,ObjectParameterCollection 参数值)
在 System.Data.Objects.ObjectQuery
1.GetResults(Nullable
1 forMergeOption)在 System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable.GetEnumerator()
在 System.Data.Objects.ObjectQuery`1.GetEnumeratorInternal()
在 System.Data.Objects.ObjectQuery.System.Collections.IEnumerable.GetEnumerator()
在 System.ServiceModel.DomainServices.Server.DomainService.Enumerate[T](IEnumerable enumerable, Int32estimateResultCount)
在 System.ServiceModel.DomainServices.Server.DomainService.Query(QueryDescription queryDescription,IEnumerable`1&validationErrors,Int32&totalCount)
在 System.ServiceModel.DomainServices.Hosting.QueryProcessor.Process[TEntity](DomainService domainService, DomainOperationEntry queryOperation, Object[] 参数, ServiceQuery serviceQuery, IEnumerable`1& validationErrors, Int32& totalCount)
在 System.ServiceModel.DomainServices.Hosting.QueryOperationBehavior`1.QueryOperationInvoker.InvokeCore(对象实例,对象 [] 输入,对象 [] 和输出)
现在奇怪的是:
我有同一个应用程序的开发部署,并且在连接到生产数据库时工作正常。
如果我连接到 SSMS 并执行存储过程,它会返回正确的数据。
所以我所做的只是重新编译存储过程。我基本上选择了存储过程,点击修改。它将生成 ALTER PROCEDURE 脚本,我只是点击执行而不更改内部任何内容。现在突然所有三个存储过程都可以正常工作了,即使我只重新编译其中一个。
为了更好地解释这一点,这是按顺序发生的:
Silverlight 应用程序突然抱怨某些 SP 不包含某些列
在 SSMS 中运行 SP,返回正常和预期的结果。
重新编译 SP
在 SSMS 中运行 SP,返回与 #2 完全相同的结果。
Silverlight 应用程序再次运行
到底是怎么回事?