2011-08-14 15 views
0

Webプロジェクト用にの一部としてEntity Framework 4.0を使用しています。私は頻繁に更新される忙しい表を持っています。更新時には、私はTransactionとして仕事をしています。ほとんどすべての時間は大丈夫ですが、次のエラーが表示されることがあります。Entity-Framework SQLコマンドのタイムアウト

System.Data.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details.
---> System.Data.SqlClient.SqlException: Timeout expired.
The timeout period elapsed prior to completion of the operation or the server is not responding.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
--- End of inner exception stack trace ---
at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
at System.Data.EntityClient.EntityCommandDefinition.Execute(EntityCommand entityCommand, CommandBehavior behavior)
at System.Data.EntityClient.EntityCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.EntityClient.EntityCommand.ExecuteScalar[T_Result](Func 2 resultSelector)
at System.Data.Objects.ObjectContext.ExecuteFunction(String functionName, ObjectParameter[] parameters)
at Downloading.Entities.DownloadingEntities.DoSomethingEx(Nullable
1 id, ...)
in ...\DAL\DownloadingEntities.Designer.cs:line 2035
at Downloading.DAL.Repository.DoSomething(Int64 Id, ...)
in ...\DAL\Repository.cs:line 982

どこが間違っていますか?

+0

このエラーの原因となっているコードは何ですか?あなたはそのコードで何をしようとしていますか? –

+0

@marc_s: 'Stored Procedure'にマップされている' EF'に対して 'DoSomething'を呼び出します。この 'SP'は私が言及したビジーなテーブルを更新します。このテーブルには約20,000件のレコードがあり、更新頻度は200〜500件/秒です。私はトランザクションを使用し、私の 'SP'でtry/catchします。 – Xaqron

答えて

0

SQLサーバー接続文字列で「接続タイムアウト」を増やしてみてください。

MSDN

+2

これは 'Connection Time-Out'とは異なる' Command Time-Out'です – Xaqron

+0

そしてObjectContext.CommandTimeoutを設定しますか? – elevener

+0

それは意味がありますが、実際にはまだ試していませんでした。 Uはこれが「EF」の一般的な状況か、何かが私の設計に間違っているかどうかを知りたいです。 – Xaqron

関連する問題