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 に答える