2017-06-14 5 views
0

DevForce Classicアプリケーションで問題が発生しました。 「リクエストは中止されました」というエラーが表示され続けます。 DevForce EFバージョンhereに記載されている場合、問題に最も近いものです。 「トランザクションが中止されました」というエラーは、TransactionSettingsのタイムアウトが短すぎることを示しています。私が見ている問題は、タイムアウト(およびDefaultQueryStrategyのTransactionSettings)が読み取り専用であることです。DevForce Classicのクエリータイムアウト

誰でもこの問題の解決方法に関するガイダンスを提供できますか?

+0

これはWCFと何が関係していますか? – Tim

+0

彼がWCFを使用している場合、タイムアウトは要求操作がタイムアウトすることによって発生する可能性があります。エラーメッセージはそれほど役に立ちません.WCF、トランザクション、またはDBクエリがタイムアウトする可能性があります。 –

答えて

0

PersistenceManagerでカスタムDefaultQueryStrategyを設定できます。例えば、以下は2分のタイムアウトで通常のデフォルトとカスタムTransactionSettingsを使用します。

var settings = new TransactionSettings( 
       UseDTCOption.UseConfigurationSetting, 
       System.Transactions.IsolationLevel.ReadCommitted, 
       new TimeSpan(0, 2, 0)); 
var queryStrategy = new QueryStrategy(QueryStrategy.Normal, settings); 
myPM.DefaultQueryStrategy = queryStrategy; 

あなたが全体のPMのためDefaultQueryStrategyを変更したくない場合、あなたはRdbQuery上のクエリ戦略を渡すことができます。例:

var query = new RdbQuery(typeof(Customer)); 
query.QueryStrategy = new QueryStrategy(myPM.DefaultQueryStrategy, settings); 

タイムアウトがWCFまたはデータベースから発生している可能性があります。トランザクションのタイムアウト値を変更しても問題が解決しない場合は、< binding>要素をBOS .configファイルから転記してください。