我首先使用EF代码在asp.net mvc中构建在线拍卖应用程序,目前我每隔5秒通过ajax更新最新的出价金额。有没有其他方法可以实现相同的
例如,订阅数据行,该数据行更新任何最新出价金额的UI元素。 例如:
Bid bid = _bidService.GetLatestBid(auctionId)
bid.Subscribe();
uielement.Update(bid.amount),
我可以使用SQLDependency并且可能是dotnet被动扩展吗?任何机构都有任何示例代码或解决方案?
答案 0 :(得分:2)
首先在数据库上启用sql dependency。
接下来,从SqlCommand创建SqlDependency并使用Observable.FromEventPattern将事件转换为observable。
示例代码:
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);
}
}