有没有办法让datagrid监听数据库并在数据库数据发生变化时自动更新数据?我使用的是SQL Server数据库。
我想尽可能使用Linq-2-SQL
答案 0 :(得分:2)
因为@Slaggg问:有相当简单的方法可以做到这一点,但它们几乎肯定会涉及大量编码,它会对性能产生相当大的影响,我强烈怀疑它会更多麻烦而不是它的价值。
也就是说,对于典型的n层应用程序,您需要处于非常高的级别:
(1)数据发生变化时通知中间层的方法。您可以在每个表中使用自定义代码触发器来触发某种通知(可能使用WCF和CLR存储过程),或者您可以使用SqlDependency对象。可能第二个会更好。
(2)通知连接到该中间层的每个客户端的方法。假设您正在使用WCF,则需要使用其中一个可用的双工绑定,例如Net.TCP或HttpPollingDuplex(适用于Silverlight)。您需要确保在客户端和服务器上都正确配置了此项。您还需要手动跟踪哪些客户端可能对更新感兴趣,以便您可以知道要更新哪些客户端,并且当它们消失或超时时您需要能够从该列表中删除它们。来自MS WCF团队的Tomek在他可能想要调查的blog上有一些很好的例子。
(3)一旦从中间层获得某些更改的通知,就会更新本地客户端的模型和/或视图模型和/或UI的机制。这比你想象的要复杂得多:在正常情况下让你的UI与你的数据模型保持同步是很困难的,但是当你的数据模型也可以从另一个方向改变时,它会变得非常复杂。 / p>
这些通知背后的想法非常简单:但是正确地获取所有细节可能会让你在晚上调试。从现在开始这两年不得不支持的人会诅咒你的名字。
希望这有帮助。
答案 1 :(得分:1)
这取决于您更新数据库的位置: