WCFRIAでエンティティフレームワークを使用するSilverlight4アプリがあります。
突然、いくつか(3つだと思います)のストアドプロシージャが機能しなくなります。すべてのユーザーが同じ問題を再現します。Silverlightアプリが関連するクエリを実行しようとすると、すべてのユーザーにエラーメッセージが表示されます。
クエリ「SomeStoredProcedure」のロード操作が失敗しました。コマンド定義の実行中にエラーが発生しました。詳細については、内部例外を参照してください。InnerExceptionメッセージ:無効な列名'someColumn'。
System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand、CommandBehaviorの動作)で
System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute [TResultType](ObjectContext context、ObjectParameterCollection parameterValues)で
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、Int32 EstimatedResultCount)で
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(Object instance、Object [] input、Object []&outputs)で
今、奇妙なことは次のとおりです。
同じアプリの開発デプロイメントがあり、本番データベースに接続するときに正常に機能します。
SSMSに接続してストアドプロシージャを実行すると、正しいデータが返されます。
だから私がしたのは、単にストアドプロシージャを再コンパイルすることでした。基本的にストアドプロシージャを選択し、[変更]をクリックします。それはALTERPROCEDUREスクリプトを生成します、私は内部で何も変更せずに実行を押すだけです。そのうちの1つだけを再コンパイルしたにもかかわらず、突然3つのストアドプロシージャすべてが再び正常に機能するようになりました。
これをよりよく説明するために、これは順番に起こることです:
Silverlightアプリが突然、一部のSPに一部の列が含まれていないと文句を言う
SSMSでSPを実行し、通常の期待される結果を返します。
SPを再コンパイルします
SSMSでSPを実行し、#2とまったく同じ結果を返します。
Silverlightアプリが再び機能する
何が起こっている?