【发布时间】:2016-10-18 03:44:22
【问题描述】:
我想在 SQL Server 中锁定一个表一段时间。我在代码级别使用 C#。我该如何实现呢,我还需要验证表是否被锁定。我对 SQL Server 中的锁定表了解不多。我想使用实体框架来实现它。非常感谢任何帮助。
【问题讨论】:
-
纯实体框架无法做到。您将必须使用 dao。
标签: c# entity-framework sql-server-2008 table-lock
我想在 SQL Server 中锁定一个表一段时间。我在代码级别使用 C#。我该如何实现呢,我还需要验证表是否被锁定。我对 SQL Server 中的锁定表了解不多。我想使用实体框架来实现它。非常感谢任何帮助。
【问题讨论】:
标签: c# entity-framework sql-server-2008 table-lock
你可以试试如下图。
using (var context = new YourContext())
{
using (var dbContextTransaction = context.Database.BeginTransaction())
{
//Lock the table during this transaction
context.Database.ExecuteSqlCommand("SELECT 1 FROM YourTable WITH (TABLOCKX)
WAITFOR DELAY '00:03:00'");
//your work here
dbContextTransaction.Commit();
}
}
注意:表锁在退出BeginTransaction块后会被释放
【讨论】:
dbContextTransaction.Commit() 而不是 scope.Commit() 和 SQL 命令中的表被实际表名替换