我正在用C#编写一个应用程序,其中不同计算机上的两个或多个用户在通过网络共享的SQLite数据库中的同一个表中填充了DataTable。我希望所有用户的数据表保持同步,这样,如果用户进行数据库操作(INSERT,UPDATE或DELETE),其他用户的DataTable将保持更新,而无需从数据库重新加载整个表。
最简单的方法是什么?
答案 0 :(得分:0)
您可以在客户端使用缓存。
这就是这里提出的:How to synchronise/check the data from database to datatable in C#?
您可以使用缓存应用程序块:http://msdn.microsoft.com/en-us/library/ff649093.aspx
,而不是那里提出的ASP.NET缓存您可以在此SO主题中找到此示例:Microsoft Enterprise Library Caching Application Block not thread safe?
Cache负责检查数据库中每X秒的所有更改,一旦发现更改后的内容,就会从数据库重新加载,您必须在应用程序中更新它。
您可以采用更智能的方式执行此操作,仍然使用缓存。
您在服务器上创建一个接收所有INSERT,UPDATE和DELETE命令的服务,它将它们应用于数据库,然后向所有客户端的缓存发送无效消息,告诉他们更新数据。
这意味着您的客户端在启动时会订阅无效通知服务,因此会在有更改时获得通知。
如果你对这个问题感兴趣,你可以在这里找到一个很好的教程:http://www.codeproject.com/Articles/51409/Exploring-Caching-Using-Caching-Application-Enterp这将有助于完全理解什么是缓存以及它是如何工作的。