0

我有一个使用带有 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(Nullable1 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 脚本,我只是点击执行而不更改内部任何内容。现在突然所有三个存储过程都可以正常工作了,即使我只重新编译其中一个。

为了更好地解释这一点,这是按顺序发生的:

  1. Silverlight 应用程序突然抱怨某些 SP 不包含某些列

  2. 在 SSMS 中运行 SP,返回正常和预期的结果。

  3. 重新编译 SP

  4. 在 SSMS 中运行 SP,返回与 #2 完全相同的结果。

  5. Silverlight 应用程序再次运行

到底是怎么回事?

4

0 回答 0