C# 通过nPgSQL接收NOTIFY有效负载
目前,我正在使用C# 通过nPgSQL接收NOTIFY有效负载,c#,.net,database,npgsql,C#,.net,Database,Npgsql,目前,我正在使用NPGSQL连接器将PostgreSQL数据库与我的应用程序连接起来,该应用程序是用VB.Net编写的 我尝试使用PostgreSQL的LISTEN和NOTIFY功能将特定表的表更改通知到前端。我从那次尝试中得到了积极的结果。我成功地从后端到前端得到了通知。为了实现这一目标,我尝试了以下方法: Public Sub test() Dim conn = New NpgsqlConnection("Server=servername;port=portNo; _
NPGSQL
连接器将PostgreSQL数据库与我的应用程序连接起来,该应用程序是用VB.Net
编写的
我尝试使用PostgreSQL的LISTEN
和NOTIFY
功能将特定表的表更改通知到前端。我从那次尝试中得到了积极的结果。我成功地从后端到前端得到了通知。为了实现这一目标,我尝试了以下方法:
Public Sub test()
Dim conn = New NpgsqlConnection("Server=servername;port=portNo; _
User Id=UID;pwd=PWD;DataBase=DB;")
conn.Open()
Dim command = New NpgsqlCommand("listen notifytest;", conn)
command.ExecuteNonQuery()
AddHandler conn.Notification, AddressOf NotificationSupportHelper
command = New NpgsqlCommand("notify notifytest;", conn)
command.ExecuteNonQuery()
End Sub
Private Sub NotificationSupportHelper(ByVal sender As Object, _
ByVal e As NpgsqlNotificationEventArgs)
'Notified here.
End Sub
这很好,但是PostgreSQL为notify提供了一个全新的功能,其中notify可以有一个负载,比如notify测试,“Hello world”
(其中Hello world是负载,换句话说,是附加信息)
我想在通知事件处理程序NotificationSupportHelper
中获取附加信息。因此,为了获得这些信息,我尝试访问NpgsqlNotificationEventArgs
的成员。但我在那次尝试中失败了,因为它只包含PID和Condition作为其成员。所以我决定看一看,从那里,我得到了,在NPGSQL版本1.0中没有办法获得额外的信息。但他们为第二版(NPGSQL2.0)中调用的NpgsqlNotificationEventArgs
提供了一个额外的成员。但它目前也在建设中。此属性将返回String.Empty always(从中)
所以我希望你们理解我想要实现的目标,我只需要在前端收到
通知时收到有效负载。有人知道如何达到我的要求吗?是否有任何可用的连接器
而不是NPGSQL
来有效处理前端的通知事件
,这意味着在前端获得有效负载。以防其他人有此问题。附加信息
属性现在可用
Private Sub NotificationSupportHelper(ByVal sender As Object,
ByVal e As NpgsqlNotificationEventArgs)
MsgBox(e.Condition & " " & e.AdditionalInformation)
End Sub
我想您已经回答了您的问题:根据您的描述,nPgSQL似乎还不支持notify负载。对于大多数应用程序来说,这是一项方便的功能,您只需将数据插入未标记的
表中,然后让您的程序在程序收到通知
时从未标记的表中选择
数据。您是否介意添加有关此功能的请求?您可以在我们的跟踪器中完成:提前谢谢@方济各会当然,我会的。@RajaprabhuAravindasamy,你能帮我一下吗,代码出了什么问题