[英]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.