有关使用Entity Framework 6进行应用程序级别锁定的问题?

时间:2015-02-05 01:31:49

标签: c# entity-framework

我正在尝试获得一些简单的应用级锁定,我的数据库架构非常简单,只是

  • ID(int)的
  • 名称
  • 后(DATETIME2)
  • OWNERID(nvarchar的(100))

这将在Web应用程序和多线程的cli应用程序中使用。

目标是建立一个底层接口,以便您可以这样做:

var l = LockerThing.Create(myLockName, myOwnershipId)

l.getLock();
l.refreshLock();
l.releaseLock();

如果该键不存在锁定记录,则会创建一条记录,否则将检索该记录,然后我们会在此时与其进行交互。

我关心的是它如何与DbContext交互,特别是保存数据库更改。我想立即创建并保存对锁定对象的更新,因为锁需要由其他应用程序检查/验证,因此它不能等待。

但是,如果此类的用户碰巧在DbContext中注册了更改,他们尚未准备好提交,则保存可能会导致问题。或者更糟糕的是,它可能在一个没有提交的事务中。所有这些问题都可以通过让调用者意识到这些问题来解决,但我不希望出现这种情况。

我正在考虑锁定东西本身就是一个岛屿。它有自己的DbContext,因此它可以直接与DB一起工作。它并不真正与系统的任何其他部分交互,系统的其他任何部分也不应与锁定表交互。

对此有何看法?有什么建议?对于那些过去使用Entity Framework创建过这类内容的人,您的推荐是什么?

0 个答案:

没有答案