2015年8月11日 星期二

Entity Framework 設定command timeout及isolationlevel

 
修改你的emdx例 MyData.edmx 下的MyData.Context.cs檔
在初始化時加入設定,如下:

 public MyDataContext()
            : base("name=MyDataContext")
{
 this.Database.CommandTimeout = 180;  //秒,語法執行timeout時間
 ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 180; //這樣也可
 //isolation=readuncommitted         
 ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;");

}


在SSMS 模擬LOCK狀態
begin transaction
update mytable set mycolymn =1 where myid = 1

然後執行網站上的查詢程式,會發現畫面一直在處理中

在SSMS 執行rollback還原後,網站畫面就可以顯示查詢結果了

在context建立時加入上述設定,就可避掉資料批次異動處理時造成的LOCK而無讀取。


沒有留言:

張貼留言

publish error allowDefinition='MachineToApplication'

一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...