2013-02-04 184 views
1

我想在項目中實現我的工作,它使用實體框架連接MSSQL 2012年我可以做以下的重試策略:重試政策

using (var model = new MyModel()) 
{ 
    for (var i = 0; i < 3; i++) 
    { 
     try 
     { 
      model.MyEntities.Where(x => x.Index < 1000); 
      break; 
     } 
     catch (Exception ex) 
     { 
     } 
    } 
} 

但它是相當繁瑣的做這個地方我想用模型進行查詢。無論如何要在模型中實現它,以便我不必擔心它?我想到的

一種方法是使用繼承DbCommand並覆蓋ExecuteScalar()ExecuteNonQuery()等,讓他們重複調用基類的一定次數的方法,但不知道是否有更簡單的方法做到這一點?

+0

無論以前的嘗試結果如何,您的示例代碼都會嘗試三次。你的架構是什麼使得重試策略成爲必要? –

+0

對不起@DaveK,如果抓取成功,我忘記添加break語句來中斷循環。請參閱更新的代碼。 – Rafid

回答

0

目前無法做「使用模型」。你必須手動實現它。無論是在存儲庫還是在某些「數據訪問適配器」中,如果您使用的是類似的東西。或者如果你想努力核心:),你當然可以創建自己的IDbConnection,IDbCommand等。

+0

感謝您的回答。不知道我在「知識庫」中瞭解你的意思,你的意思是像在我的情況下在SQL Server端實施重試策略? – Rafid

+0

我的意思是存儲庫模式:http://martinfowler.com/eaaCatalog/repository.html或http://msdn.microsoft.com/en-us/library/ff649690.aspx。 –