2015-12-16 148 views
0

如何使用EF執行更新,其中我想更改的值是相對值。更新記錄使用EF

目前我做這個

public Result UpdateResult(long resultID, int count) 
{ 
    var result = this.UOW.GetRepository<Result>().GetAll().FirstOrDefault(sr => sr.ResultID == resultID); 

    scheduleResult.count += count; 

    return result; 
} 

但問題是,在分佈式環境中,這可能會發生兩次,當我們基本上是做一個GET,而更新值可能會被錯過。我怎樣才能執行一個更新作爲一個單一的操作發送+=到SQL服務器,以確保SQL負責鎖定行?

回答

0

您可以創建一個存儲過程並運行它。或直接在服務器上調用SQL查詢。

DbContext.Database公開此功能。

您也可以使用TransactionScopeMSDN docs)將兩個操作都保留在一個事務中,但這樣更加昂貴。