asp.net - 如何在运行时打开数据库连接?

标签 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() 中有一些代码?

我乐于接受您的宝贵意见。感谢您的帮助!

最佳答案

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

但是,如果必须的话,您可以将其作为单例服务注入(inject),该服务的生命周期比单个请求长。这对于缩放来说是有问题的,不推荐。

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

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

关于asp.net - 如何在运行时打开数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53782901/

相关文章:

c# - 在 ASP.NET 中重定向之前的 Javascript 警报

asp.net-mvc - MVC 局部 View 不呈现

javascript - 在客户端缓存大量的 json 结果

sql - 个人和团体注册的数据库设计

asp.net - WCF 响应太长 - 身份验证错误

c# - 将 HTML 转换为 Word 文档

c# - ASP .NET 系统设计建议。

asp.net-mvc - ValidationSummary 显示重复的消息

database - 当另一个进程修改数据库时,Hibernate 二级缓存失效

sql-server - 包含 1.5 亿页的 100,000 个 PDF 的文本索引