【发布时间】:2018-04-13 14:50:27
【问题描述】:
我正在尝试在 .NET MVC5 应用程序中实现 SignalR。我正在使用 EF 6.0.0 和 SignalR 2.2.3。每当数据库发生一些变化(更新、插入、删除)时,我都想更新客户端屏幕。我四处搜索,发现一些文章展示了如何设置 SignalR 以发送实时消息(如聊天),然后有一些文章展示了如何使用 ADO.NET 而不是 EF 来做我想做的事情。 Here's 我发现的一篇文章使用 ADO.NET 来实现相同的目标。除了 EF,我能做些什么来实现同样的事情?下面是文章中处理 ADO.NET 部分的代码 sn-p:
public class JobInfoRepository {
public IEnumerable<JobInfo> GetData()
{
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand(@"SELECT [JobID],[Name],[LastExecutionDate],[Status]
FROM [dbo].[JobInfo]", connection))
{
// Make sure the command object does not already have
// a notification object associated with it.
command.Notification = null;
SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
if (connection.State == ConnectionState.Closed)
connection.Open();
using (var reader = command.ExecuteReader())
return reader.Cast<IDataRecord>()
.Select(x => new JobInfo(){
JobID = x.GetInt32(0),
Name = x.GetString(1),
LastExecutionDate = x.GetDateTime(2),
Status = x.GetString(3) }).ToList();
}
}
}
我也阅读了文章中的 cmets,有人说dependency_OnChange 方法正在连续触发。难道不应该只在我们更改数据库中的某些内容时才触发它吗?如果要连续触发,我们还不如使用简单的ajax轮询,每秒轮询db,对吧?
我可以查看另一篇使用 SignalR 解释 EF 的文章吗?谢谢
【问题讨论】:
标签: c# entity-framework asp.net-mvc-5 signalr