2017-06-14 78 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>元素。