如何在运行时打开数据库连接?

时间:2018-12-14 15:48:06

标签: asp.net asp.net-mvc database fluent-nhibernate

我正在研究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()中的某些代码?

我愿意接受您的宝贵意见。谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

在多个事务中打开连接或在ORM中保持状态是不明智的做法,因为当您针对同一对象和连接发出多个请求时,状态问题会很快出现。

但是,如果必须的话,可以将其作为Singleton服务注入,该服务的生存期将比单个请求更长。这对于扩展是有问题的,不建议这样做。

services.AddSingleton<ISession>(provider =>
{
    return FluentNHibernateHelper.OpenSession()
});

更多信息:What is the difference between services.AddTransient, service.AddScoped and service.AddSingleton methods in ASP.NET Core?