C# 当我将SqlCommand设置为通用时,SignalR SqlDependency会中断

C# 当我将SqlCommand设置为通用时,SignalR SqlDependency会中断,c#,sql,asp.net-mvc,signalr,C#,Sql,Asp.net Mvc,Signalr,我正在使用SignalR接收对数据库的更新。我试图使我的方法通用化,如下所示,但是,这打破了SQL依赖关系,因为当数据库发生变化时,它不会触发。我已经将问题的根源缩小到SQL命令,它似乎停止了它的工作 public IEnumerable<T> GetAllMessages<T>() where T : new() { var messages = new List<T>(); using (var connection

我正在使用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;
    }

是什么阻止了它的工作?我如何解决这个问题?

typef(T)。Name
不是您所期望的。放置一个断点并查看。

它实际上正是我所期望的。我使用代码优先迁移,因此我的模型类型有一个同名的匹配表。您没有名称空间吗?还有,它是复数吗?在您的示例中,表名是复数的,您的类名可能不是。名称匹配,并且该命令在第一次提取数据时起作用。问题是它不再工作了,如果数据库中有更改,SqlDependency不会启动
using (var command = new SqlCommand(@"SELECT [ID], 
            [Name], [Number], [DateLastUpdated] FROM [dbo].[HeartBeats]", connection))