在数据库访问应用程序中管理并发的最佳方法是什么?

Gou*_*oul 9 c# database concurrency database-concurrency

不久前,我写了一个由多个用户用来处理交易创建的应用程序.我现在还没有完成开发一段时间,我不记得我是如何管理用户之间的并发性的.因此,我在设计方面寻求一些建议.

原始申请具有以下特征:

  • 每个用户一个重客户端.
  • 单个数据库.
  • 访问数据库以便每个用户插入/更新/删除交易.
  • 应用程序中反映交易表的网格.每当有人更改交易时,该网格都会更新.
  • 我正在使用WPF.

这就是我想知道的:

  1. 我是否认为我不应该关心每个应用程序与数据库的连接?考虑到每个单独存在一个单例,我希望每个客户端有一个连接没有问题.

  2. 我怎样才能防止访问的并发性?我想我应该在修改数据时锁定,但是不记得怎么做.

  3. 如何设置网格以便在我的数据库更新时自动更新(例如,由其他用户更新)?

预先感谢您的帮助!

Jim*_*dra 4

  1. 考虑利用连接池来减少连接数。请参阅:http ://msdn.microsoft.com/en-us/library/8xx3tyca.aspx

  2. 尽可能晚锁定并尽快释放,以最大限度地提高并发性。您可以使用 TransactionScope(请参阅:http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspxhttp://blogs.msdn.com/b/dbrowne/archive/2010/05 /21/using-new-transactionscope-considered-harmful.aspx)如果您有多个数据库操作需要一起来管理一致性或只是在数据库存储过程中处理它们。让您的查询保持简单。请按照以下提示了解锁定的工作原理以及如何减少资源争用和死锁:http://www.devx.com/gethelpon/10MinuteSolution/16488

  3. 我不确定其他数据库,但对于 SQL,您可以使用 SQL 依赖项,请参阅http://msdn.microsoft.com/en-us/library/a52dhwx7(v=vs.80).aspx