【发布时间】:2018-04-25 13:17:55
【问题描述】:
我正在使用 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 命令更改为下面的 sn-p,它会按预期工作:
using (var command = new SqlCommand(@"SELECT [ID],
[Name], [Number], [DateLastUpdated] FROM [dbo].[HeartBeats]", connection))
是什么阻止了它的工作,我该如何解决这个问题?
【问题讨论】:
标签: c# sql asp.net-mvc signalr