使SQL Server表在Rx和C#中可观察

rda*_*pan 6 c# sql-server system.reactive

我正在研究Rx.NET流SQL服务器数据表的潜力。基本上,我希望在插入数据时尽可能地使数据更接近而不使用轮询。

我使用Rx / DataReader进行了一些POC,但是插入新行时无法订阅。当没有更多行可供选择时,流停止(当然这是预期的)。

限制条件:

  • SQL Server和数据库上没有配置更改
  • 可能没有轮询

我想到了这些解决方案,但是这些解决方案需要许可证或服务器更改:

  • StreamInsight
  • SQLDependency
  • 扳机

.NET中是否有类似SQLBrite的内容?

J. *_*non 3

使用 Service Broker 所需的努力和痛苦是巨大的(消息类型、契约、队列等),如果您不是 SQL Server 人员,甚至不会考虑。

有一个开源实现似乎有帮助。您可以查看: https: //tabledependency.codeplex.com - 它可能比您期望的更能解决您的问题。

比这更简单,您可以使用/使用 SqlDependency - https://msdn.microsoft.com/en-us/library/62xk7953(v=vs.110).aspx在几行代码中,您可以观看表更改(使用一些限制),只需注意应用程序和数据库性能。

它们都没有提供IObservable<T>开箱即用的功能。但一旦你有一个DataChangedOnDependencyChange事件或类似的事情。您可以使用 进行抽象Rx,将 .net 事件转换为可观察量 - https://msdn.microsoft.com/en-us/library/hh229241(v=vs.103).aspx