Я использую SignalR для получения обновлений в базе данных. Я попытался сделать свой метод для создания этого универсального, как показано ниже, однако, это нарушает зависимость SQL, поскольку она не срабатывает при изменении в БД. Я сузил источник проблемы до команды SQL, которая, кажется, мешает ей работать.
public IEnumerable<T> GetAllMessages<T>() where T : new()
{
var messages = new List<T>();
using (var connection = new SqlConnection(_connString))
{
connection.Open();
using (var command = new SqlCommand(@"SELECT * FROM [dbo]." + typeof(T).Name, connection))
{
command.Notification = null;
var dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
if (connection.State == ConnectionState.Closed)
connection.Open();
var reader = command.ExecuteReader();
while (reader.Read())
{
var row = new T();
ConvertReaderToRelevantModel(reader, row);
messages.Add(row);
}
}
}
return messages;
}
Если я изменю команду SQL на фрагмент ниже, она будет работать как положено:
using (var command = new SqlCommand(@"SELECT [ID],
[Name], [Number], [DateLastUpdated] FROM [dbo].[HeartBeats]", connection))
Что мешает этому работать и как я могу решить эту проблему?