Win*_*Win 4 .net entity entity-relationship entity-framework entity-framework-4
我使用Entity Framework 从不同的应用程序调用相同的数据库.但是,当一个应用程序正在读取/更新记录时,我不希望其他应用程序读取该数据.
我尝试使用以下示例代码; 但是,他们仍然能够阅读记录.
任何建议或不同的方法将受到高度赞赏!
using (Entities context = new Entities(ConnectionString))
{
DBTable entity;
do
{
entity = context.DBTable
.Where(item => item.IsLock == false)
.FirstOrDefault();
if (entity != null)
{
// Map entity to class
......
// Lock the record; it will be unlocked later by a calling method.
entity.IsLock = true;
context.SaveChanges();
count++;
}
} while (entity != null && count < 100);
}
Run Code Online (Sandbox Code Playgroud)
编辑:基本上,我读了一个记录并做了一些事情(有时需要很长时间).然后使用成功/失败标志更新记录(如果失败,则可以再次执行此操作).我不希望其他应用程序多次执行成功任务.
从评论转到答案:
如果您不介意使用SQL修复此问题,请创建存储过程.在存储过程中对记录WITH UPDLOCK执行SELECT(有关表提示的信息,请参见此处).在SELECT之后,将记录更新为IsLock.这可以防止任何其他进程在检查/设置IsLock字段时读取数据.
希望有所帮助
| 归档时间: |
|
| 查看次数: |
4410 次 |
| 最近记录: |