【问题标题】:How can I open database connection at runtime?如何在运行时打开数据库连接?
【发布时间】:2018-12-14 15:48:05
【问题描述】:

我正在开发 ASP.Net MVC 项目。我正在与我的数据库交易;

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

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

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

【问题讨论】:

  • 不要。您希望每次都使用打开/关闭连接。让连接打开的时间比您当前的操作更长可能很糟糕,非常非常糟糕。数据库的最佳实践在处理连接或 ORM 连接时总是显示使用,这是有充分理由的。

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


【解决方案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?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-16
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 2010-09-21
    • 2010-11-28
    相关资源
    最近更新 更多