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