首页 > 解决方案 > 如何在运行时打开数据库连接?

问题描述

我正在研究 ASP.Net MVC 项目。我正在与我进行数据库交易;

using (ISession session = FluentNHibernateHelper.OpenSession())
        {
            var user = session.Query<User>()
                .FirstOrDefault(x => x.UserEmail == email && x.UserPassword == password); }

我不想每次都使用这种类型的代码块,就像每次打开-关闭连接一样,我想在运行时打开连接,并且我想在session任何地方使用该变量。也许Global.asax.csApplication_Start()中有一些代码?

我对您的宝贵想法持开放态度。谢谢您的帮助!

标签: asp.netasp.net-mvcdatabasefluent-nhibernate

解决方案


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

但是,如果必须,您可以将其作为 Singleton 服务注入,该服务比单个请求的寿命更长。这对于缩放是有问题的,不推荐。

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

更多信息:ASP.NET Core 中的 services.AddTransient、service.AddScoped 和 service.AddSingleton 方法有什么区别?


推荐阅读