asp.net - 如何在运行时打开数据库连接?
问题描述
我正在研究 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()
中有一些代码?
我对您的宝贵想法持开放态度。谢谢您的帮助!
解决方案
让连接保持打开状态或在多个事务中维护 ORM 中的状态是不好的做法,因为当您针对同一对象和连接发出多个请求时,状态问题可能会很快出现。
但是,如果必须,您可以将其作为 Singleton 服务注入,该服务比单个请求的寿命更长。这对于缩放是有问题的,不推荐。
services.AddSingleton<ISession>(provider =>
{
return FluentNHibernateHelper.OpenSession()
});
更多信息:ASP.NET Core 中的 services.AddTransient、service.AddScoped 和 service.AddSingleton 方法有什么区别?
推荐阅读
- snmp - SNMP4j 代理中的 DuplicateRegistrationException
- android - 长时间延迟后抛出套接字超时异常
- c# - Visual Studio DialogWindow 的 InitializeComponent() 在 Nunit 测试中引发异常
- cordova - 在 ionic 3 中集成 Facebook 登录
- python - keras中的概率回归
- angular - 带有 --watch=false 的 Angular CLI 6 覆盖返回错误
- java - 方法编译并使用传递的错误类型的变量
- android - 无法使用 Dagger 2 注入 Fragment
- oracle - 异常是在错误的地方吗?放在哪里最好?
- java - 我想知道一种用于滚动和单击菜单每个元素的通用方法