如何使用 ORM 处理并发

Posted

技术标签:

【中文标题】如何使用 ORM 处理并发【英文标题】:How To Handle Concurrency Using An ORM 【发布时间】:2010-08-29 00:54:12 【问题描述】:

假设我正在编写一个用户必须预约的应用程序(在我的例子中,用户与员工配对,并且该员工将在一天中的特定时间为该用户工作)。我将如何确保 2 个用户最终不会使用 NHibernate 或实体框架预订同一个约会?我会打开交易并执行以下操作:

BeginTransaction();

if(!AppointmentBooked(userId, employeeId, time)) // read
   BookAppointment(userId, employeeId, time); // write

CommitTransaction();

【问题讨论】:

【参考方案1】:

查看这篇文章可能会有所帮助。我遇到了像你这样的问题。实体框架具有通过配置进行非乐观并发的能力。

http://msdn.microsoft.com/en-us/library/bb738618.aspx

【讨论】:

以上是关于如何使用 ORM 处理并发的主要内容,如果未能解决你的问题,请参考以下文章

避免贫血域模型如何与 ORM、依赖注入和可靠方法一起使用

转——浅谈如何提高服务器并发处理能力

如何从 SQLAlchemy ORM 会话中查询预先存在的表?

如何使用 Autofac 注入相同的 DbContext 实例来处理 HTTP 请求而不会导致并发问题?

SQLAlchemy:如何在删除时禁用 ORM 级外键处理?

哪个 ORM 框架可以最好地处理 MVCC 数据库设计?