2017-06-14 61 views
0

我們的DevForce Classic應用程序在查詢超時時遇到問題。我們不斷收到錯誤「請求被中止」。與DevForce EF版本here上描述的問題最接近。它表示錯誤「事務被中止」表示TransactionSettings的超時時間太短。我看到的問題是超時(和DefaultQueryStrategy的TransactionSettings)是隻讀的。DevForce經典查詢超時

任何人都可以提供一些關於如何解決這個問題的指導?

+0

這與WCF有什麼關係? – Tim

+0

如果他使用WCF,超時可能是由請求操作超時引起的。錯誤消息沒有什麼幫助 - 它可能是WCF,事務或DB查詢超時。 –

回答

0

您可以在PersistenceManager上設置一個自定義的DefaultQueryStrategy。例如下面就用通常的默認值和定製TransactionSettings,2分鐘超時:

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; 

如果你不想改變DefaultQueryStrategy整個下午,你可以通過在RdbQuery查詢策略。例如:

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

可能超時來自WCF或數據庫。如果更改事務超時值不起作用,請從您的BOS .config文件中發佈< binding>元素。