Asp.net mvc 4 是否可以对SQl依赖项进行计数查询?
关于signar和SQL依赖关系,查询通知是否不能使用像count(*)这样的聚合函数Asp.net mvc 4 是否可以对SQl依赖项进行计数查询?,asp.net-mvc-4,signalr,sqldependency,query-notifications,Asp.net Mvc 4,Signalr,Sqldependency,Query Notifications,关于signar和SQL依赖关系,查询通知是否不能使用像count(*)这样的聚合函数 有没有其他方法或想法来创建包含聚合函数的查询?是的,如果您想使用像count(*)这样的聚合函数来查询sql依赖关系,我有一个解决方案。首先,在您的存储库中仍然使用select查询。但在读卡器中,您只需计算读卡器执行命令所需的数据。像这样的 int count = 0; command = new SqlCommand(@"select Edolpuz_DB.dbo.TABEL_KONFIRMASI_PEMB
有没有其他方法或想法来创建包含聚合函数的查询?是的,如果您想使用像count(*)这样的聚合函数来查询sql依赖关系,我有一个解决方案。首先,在您的存储库中仍然使用select查询。但在读卡器中,您只需计算读卡器执行命令所需的数据。像这样的
int count = 0;
command = new SqlCommand(@"select Edolpuz_DB.dbo.TABEL_KONFIRMASI_PEMBAYARAN.ID_BUKTI_PEMBAYARAN from Edolpuz_DB.dbo.TABEL_KONFIRMASI_PEMBAYARAN where Edolpuz_DB.dbo.TABEL_KONFIRMASI_PEMBAYARAN.IS_NEW = @room", connect);
command.Parameters.AddWithValue("room", true);
try
{
command.Notification = null;
SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
if (connect.State == ConnectionState.Open)
connect.Close();
connect.Open();
reader = command.ExecuteReader();
while (reader.Read())
{
count++;
}
return count;
}
catch { return 0; }
finally { connect.Close(); }
使用类时要小心,因为它有内存泄漏。您可以使用SqlDependency类的开源实现-。它使用数据库触发器和本机ServiceBroker通知来接收有关表更改的事件。这是一个使用示例:
int changesReceived=0;
使用(SqlDependencyEx SqlDependencyEx=new SqlDependencyEx(
测试\连接\字符串、测试\数据库\名称、测试\表\名称)
{
sqlDependency.TableChanged+=(o,e)=>changesReceived++;
sqlDependency.Start();
//更改表格。
MakeTableInsertDeleteChanges(changesCount);
//请稍等,以接收所有更改。
睡眠(1000);
}
断言.AreEqual(changesCount,changesReceived);
使用SqlDependecyEx,您可以只监视插入或删除,避免更新,从而获得理想的结果:类似计数的行为。希望这有帮助。@OmegaMan你能帮我吗?