簡體   English   中英

在SignalR上的集線器內使用事務是正確的

[英]Is correct to use transaction inside a Hub on SignalR

我正在學習SignalR,對此有些疑問。

第一:集線器是否充當靜態對象? 該問題移至下一個問題。

第二:在集線器內部的方法內啟動事務是否正確?

我想使用SignalR實時發送和保存信息。 例如,我要創建一個聊天,並且當服務器收到消息時,它將保存在數據庫中。

我的問題是關於接收消息的方法將永遠存在於內存中(當webapp運行時)。

我關心的是事務/連接。 交易會一直有效嗎?

例如:

public void Send(string name, string message)
        {
             Message m = new Message() { n = name, m = message};
             using(Entities db = new Entities()
             {
                 db.Messages.Add(m);
                 db.Save();
             } 
            // Call the addNewMessageToPage method to update clients.
            Clients.All.addNewMessageToPage(name, message);
        }

我正在使用EntityFramework 6和SignalR 2。

為每個請求創建集線器實例。 您可以在此處了解有關中心實例生存期的更多信息。 EF每次需要保存更改時都會創建一個事務。 但是,一旦保存更改完成且事務不會泄漏到SaveChanges調用之外,則EF所創建的事務將被提交/回滾並處置。 您還將布置上下文(這很好),以免泄漏事務或連接。 (實際上,集線器實例生存期與您的情況根本無關,因為您不嘗試在類變量中存儲任何內容)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM