我正在使用.NET Framework 4.6.1,WinForms,PostgreSQL 6.4beta4和Npgsql与ADO.NET。
我的当前应用程序是一个多用户应用程序,所有用户都连接到同一个数据库。
使用DataTable、BindingSource和BindingNavigator将数据绑定到控件上。
我想避免两个用户同时编辑一个DataRow。 因为我想以更一般的方式实现这个,所以我考虑创建一个DataTable后代并添加属性LockMode (None, Row, Table)。
我发现可以使用ColumnChanged事件与RowState结合使用来检测数据的更改。
我现在知道用户是否正在插入新值、编辑(行状态=修改)现有值还是只查看(行状态=未更改)记录。
因此,我正在寻找一种解决方案,以便在用户开始编辑DataRow时锁定它。在应用程序中,我希望当用户导航(使用Bindingnavigator或编程方式)到已锁定的记录时显示消息。
我发现大多数解决方案针对MySql服务器,例如: 如何执行行锁定? 或 TransactionScope锁定表和隔离级别。
但是,我正在寻找一个PostgreSQL解决方案,因此即使是来自MS的这个主题的文章(https://msdn.microsoft.com/en-us/library/system.transactions.transactionscope(v=vs.110).aspx)也无法在这里使用。
如果有经验的PostgreSQL和ADO.NET用户能帮我解决这个问题,我将不胜感激。谢谢。