2013-01-31 26 views
1

我使用EF代碼首先,我目前通過ajax更新最新的中標金額輪詢每5秒在asp.net mvc的建立網上拍賣申請的任何變化。還有沒有其他的辦法可以達到同樣的訂閱排在數據庫中的變化,推動如存在於客戶端

例如訂閱該更新的任何最新的出價金額,UI元素的數據行。 例如:

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

我可以使用的SqlDependency並且可以是DOTNET反應性擴展?任何機構都有任何示例代碼或解決方案?

回答

2

數據庫上啓用sql dependency第一。

接下來,從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); 
    } 
} 
相關問題