我首先使用 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);
}
}