1

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

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

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

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

4

1 回答 1

2

首先启用对数据库的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);
    }
}
于 2013-08-14T06:39:52.920 回答