2009-10-26 25 views
8

tôi cần phải làm một cái gì đó như thế nàyKhóa một bảng với một lựa chọn trong Entity Framework

select * from myTable with (xlock,holdlock) 

sử dụng Entity Framework. Điều này có thể không? Tôi đã mở một số TransactionScope với mức cách ly Serializable nhưng các lựa chọn của tôi không khóa các bảng. Tôi muốn họ khóa cho đến khi tôi hoàn thành phạm vi giao dịch.

Trả lời

6

Có thể nhưng bạn phải hành SQL bạn không thể thêm các gợi ý khóa khi sử dụng LINQ (như xa như tôi biết):

ObjectContext.ExecuteStoreCommand(
       string.Format("select 1 from [{0}] with (tablockx, holdlock) where 0 = 1", 
           tableName)); 

Nếu bạn làm điều đó trong một phạm vi giao dịch sau đó bạn sẽ giữ khóa cho đến khi bạn hoàn tất giao dịch.

Một chút biết thêm chi tiết có thể được tìm thấy ở đây:

http://peplowdown.wordpress.com/2010/07/18/locking-across-servers-table-locks-with-entity-framework/

Các vấn đề liên quan