Simple System.Data.SqlClient.SqlDependency listener implementation
The Adeotek.SqlDependencyListener NuGet package can be found here. Alternatively you can install it via one of the following commands below:
NuGet command:
Install-Package Adeotek.SqlDependencyListener
.NET Core CLI:
dotnet add package Adeotek.SqlDependencyListener
var options = new SqlDependencyListenerOptions
{
CommandTimeout = 60000, // Optional (default 60000)
ManualConfiguration = false, // Required (false)
AutoEnableServiceBroker = true, // Optional (default false)
ListenerType = NotificationTypes.Insert | NotificationTypes.Update | NotificationTypes.Delete, // Optional
Identity = 1 // Optional (default 1)
//// Database objects naming options
QueueSchemaName = "dbo", // Optional (default "dbo")
QueueName = "TEST_NOTIFICATIONS_QUEUE",
ServiceName = "TEST_NOTIFICATIONS_SERVICE",
TriggerName = "TR_TEST_NOTIFICATIONS",
InstallProcedureName = "SP_INSTALL_TEST_NOTIFICATIONS",
UninstallProcedureName = "SP_UNINSTALL_TEST_NOTIFICATIONS"
};
var listener = new SqlDependencyListener<EventData<DataModel>>(
connectionString,
databaseName,
tableName,
databaseSchema,
options);
listener.OnTableChanged += OnTableChangedHandler;
listener.Start();
// ...
listener.Stop();
OnTableChanged example
void OnTableChangedHandler(object sender, TableChangedEventArgs<EventData<DataModel>> e)
{
Console.WriteLine("Event raw message (JSON): {0}", e.Message);
EventData<DataModel> data = e.Data;
}
var options = new SqlDependencyListenerOptions
{
CommandTimeout = 60000, // Optional (default 60000)
ManualConfiguration = true, // Required (true)
QueueSchemaName = "dbo", // Optional (default "dbo")
QueueName = "TEST_NOTIFICATIONS_QUEUE" // Required
};
var listener = new SqlDependencyListener<CustomDataModel>(
connectionString,
databaseName,
tableName,
databaseSchema,
options);
listener.OnTableChanged += OnTableChangedHandler;
listener.Start();
// ...
listener.Stop();
OnTableChanged example
void OnTableChangedHandler(object sender, TableChangedEventArgs<CustomDataModel> e)
{
Console.WriteLine("Event raw message (JSON): {0}", e.Message);
CustomDataModel data = e.Data;
}
For complete usage example, please check the sample project.