我正在研究ASP.Net MVC项目。我正在与我进行数据库事务;
using (ISession session = FluentNHibernateHelper.OpenSession())
{
var user = session.Query<User>()
.FirstOrDefault(x => x.UserEmail == email && x.UserPassword == password); }
我不想在每次使用时都像打开-关闭连接那样使用这种类型的代码块,而是想在运行时打开连接,而想在所有地方使用该session
变量。也许 Global.asax.cs 中Application_Start()
中的某些代码?
我愿意接受您的宝贵意见。谢谢您的帮助!
答案 0 :(得分:1)
在多个事务中打开连接或在ORM中保持状态是不明智的做法,因为当您针对同一对象和连接发出多个请求时,状态问题会很快出现。
但是,如果必须的话,可以将其作为Singleton服务注入,该服务的生存期将比单个请求更长。这对于扩展是有问题的,不建议这样做。
services.AddSingleton<ISession>(provider =>
{
return FluentNHibernateHelper.OpenSession()
});