gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 17:54:12 26 4
gpt4 key购买 nike

不久前,我编写了一个供多个用户使用的应用程序来处理交易创建。我有一段时间没有做开发了,我不记得我是如何管理用户之间的并发的。因此,我正在寻求一些设计方面的建议。

原始应用程序具有以下特征:

  • 每位用户一个重度客户端。
  • 单个数据库。
  • 为每个用户访问数据库以插入/更新/删除交易。
  • 应用程序中反射(reflect)交易表的网格。每次有人更改交易时,该网格都会更新。
  • 我正在使用 WPF。

这是我想知道的:

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

  2. 我怎样才能防止并发访问?我想我应该在修改数据时锁定,但不记得如何锁定。

  3. 如何将网格设置为在我的数据库更新时自动更新(例如,由另一个用户更新)?

预先感谢您的帮助!

最佳答案

  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 Dependency,参见 http://msdn.microsoft.com/en-us/library/a52dhwx7(v=vs.80).aspx

关于c# - 在数据库访问应用程序中管理并发的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4681280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com