Cơ sở dữ liệu thăm dò ý kiến không phải là giải pháp thanh lịch.
SqlDependency
từ ADO.NET sẽ hữu ích trong trường hợp của bạn. Nó không sử dụng cơ chế bỏ phiếu nhưng thông báo. Các thông báo được cung cấp bởi Service Broker trong cơ sở dữ liệu của bạn, vì vậy bạn sẽ cần phải bật dịch vụ này trong cơ sở dữ liệu của mình. OnChange
sự kiện sẽ tăng lên khi bảng được chỉ định thay đổi (cập nhật, xóa, chèn ..)
Đây là một ví dụ về cách sử dụng SqlDependency:
void Initialization()
{
// Create a dependency connection.
SqlDependency.Start(connectionString, queueName);
}
void SomeMethod()
{
// Assume connection is an open SqlConnection.
// Create a new SqlCommand object.
using (SqlCommand command=new SqlCommand(
"SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers",
connection))
{
// Create a dependency and associate it with the SqlCommand.
SqlDependency dependency=new SqlDependency(command);
// Maintain the refence in a class member.
// Subscribe to the SqlDependency event.
dependency.OnChange+=new
OnChangeEventHandler(OnDependencyChange);
// Execute the command.
using (SqlDataReader reader = command.ExecuteReader())
{
// Process the DataReader.
}
}
}
// Handler method
void OnDependencyChange(object sender,
SqlNotificationEventArgs e )
{
// Handle the event (for example, invalidate this cache entry).
}
void Termination()
{
// Release the dependency.
SqlDependency.Stop(connectionString, queueName);
}
từ http://msdn.microsoft.com/en-us/library/ 62xk7953.aspx
Dưới đây là cách bật Service Broker (lưu ý rằng bạn sẽ có độc quyền trên cơ sở dữ liệu để làm điều đó - tốt nhất hãy làm điều đó sau khi khởi động lại máy chủ sql): http://blogs.sftsrc.com/stuart/archive/2007/06/13/42.aspx
(Liên kết bị hỏng)
Liên kết thay thế có thể có: http://technet. microsoft.com/en-us/library/ms166086(v=sql.105).aspx