asp.net mvc - 订阅数据库中的行更改,并在客户端发生任何更改时推送



我首先使用 EF 代码在 asp.net mvc 中构建在线拍卖应用程序,目前我每 5 秒通过 ajax 更新一次最新的出价金额轮询。 还有其他方法可以达到相同的目的吗

例如,订阅一个数据行,该数据行会针对任何最新的出价金额更新 UI 元素。例:

Bid bid = _bidService.GetLatestBid(auctionId)
bid.Subscribe();    
uielement.Update(bid.amount),

是否可以使用 SQLDependency 并且可能是 dotnet 反应式扩展? 任何机构都有任何示例代码或解决方案?

首先启用对数据库的 sql 依赖。

接下来,从 SqlCommand 创建 SqlDependency 并使用 Observable.FromEventPattern 将事件转换为可观察的。

示例代码:

public class SqlDependencyObservable : ObservableBase<SqlNotificationEventArgs>
{
    private readonly SqlCommand _command;
    public SqlDependencyObservable(SqlCommand command)
    {
        _command = command;
    }
    protected override IDisposable SubscribeCore(IObserver<SqlNotificationEventArgs> observer)
    {
        SqlDependency dependency = new SqlDependency(_command);
        return Observable.FromEventPattern<OnChangeEventHandler, SqlNotificationEventArgs>
            (addHandler: handler => dependency.OnChange += handler, removeHandler: handler => dependency.OnChange -= handler)
            .Select(i => i.EventArgs)
            .Subscribe(observer);
    }
}

相关内容

  • 没有找到相关文章

最新更新