c# - SQL 依赖 C#
问题描述
我希望在 UI 表上有实时数据,我想从使用表值函数的 SQL Server 存储过程中获取数据,但是在调用依赖项更改时出现无效订阅错误。
SqlConnection co = new SqlConnection(_connectionStringTest);
var messages = new List<WorkToListHeaderModel>();
SqlDependency.Stop(_connectionStringTest);
SqlDependency.Start(_connectionStringTest);
using (var cmd = new SqlCommand(@"[DBO].[spTest]", co))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Notification = null;
SqlDataAdapter da = new SqlDataAdapter(cmd);
var dependency = new SqlDependency(cmd);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
DataSet ds = new DataSet();
da.Fill(ds);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
messages.Add(item: new WorkToListHeaderModel
{
SalesOrderNumber = ds.Tables[0].Rows[i][0].ToString(),
});
}
}
return messages;
private void dependency_OnChange(object sender, SqlNotificationEventArgs e)
{
if (e.Type == SqlNotificationType.Change)
{
MyHub.SendMessages();
}
}
SQL
ALTER PROCEDURE [dbo].[spTest]
AS
BEGIN
SELECT SalesOrderNumber, Test
FROM dbo.[TableTest]('z')
END
功能
ALTER FUNCTION [dbo].[TableTest]
(@SalesOrderNumber NVARCHAR(100))
RETURNS
@Table TABLE
(
SalesOrderNumber NVARCHAR(100),
Test NVARCHAR(150)
)
AS
BEGIN
;WITH Selects AS
(
SELECT
AdamTest.SalesOrderNumber,
TEST AS CustomerName
FROM
[dbo].[Test]
LEFT JOIN
DBO.Test2 ON Test2.SALESORDERNUMBER = Test.SalesOrderNumber
)
INSERT INTO @Table
SELECT DISTINCT s.SalesOrderNumber, s.CustomerName
FROM Selects AS S
RETURN
解决方案
推荐阅读
- if-statement - SSIS: Go back to prior step when If-condition is not met
- c# - 解析 XML 文件节点并将其存储到字典
- javascript - 在对象数组中对动态键进行分组
- python - 计算文件中具有特定长度的不同单词的数量的 Python 代码
- caching - 如何缓存 dblookup 调解器使用的数据库
- scala - Scala 2.13 (im)mutable .map with 'Nothing" reference
- r - 通过 HTTP 链接包含/导入 markdown 文件
- vba - 运行时错误“3061”:预期参数太少 1
- javascript - 如何在我的代码中进一步使用生成的 id (javascript)
- html - 如何响应地在图像的两侧放置文本?