当前位置: 首页 > 编程语言 > C#

如何在ASP.NETMVC应用程序中维护数据库连接?分享

时间:2023-04-10 15:14:41 C#

如何在ASP.NETMVC应用程序中维护数据库连接?我没有在我的Web应用程序中使用LINQ-to-SQL或EntityFramework位,并且目前一直在使用类似的东西(这是针对类项目):usingSystem.Data;使用System.Data.SqlClient;命名空间StackOverflowClone.Models{publicclassDatabase{publicstaticSqlConnectionActiveConnection{get;私有集;}staticDatabase(){ActiveConnection=newSqlConnection("DataSource=********.database.windows.net;"+"初始目录=EECS341;Uid=*****;Pwd=******;"+"MultipleActiveResultSets=True;");ActiveConnection.Open();但是,这似乎会导致线程问题,因为静态初始化器每个服务器进程运行一次,而不是每个请求运行一次。该框架是否提供了一种内置的方式来处理这个问题,或者我应该只提供一个函数来处理每个新的数据库连接?或者我应该有一个每次数据库连接更新时都会发出声音的功能吗?做吧。让ADO.NET连接池为您处理细节。您的目标应该是尽可能缩短连接时间。连接池减少了必须打开新连接的次数。池程序维护物理连接的所有权。它通过为每个给定的连接配置维护一组活动连接来管理连接。每当用户在连接上调用Open时,池程序将在池中查找可用连接。如果池连接可用,则将其返回给调用者而不是打开新连接。当应用程序在连接上调用Close时,池程序会将其返回到池中的活动连接集,而不是将其关闭。一旦连接返回到池中,它就可以在下一个Open调用中重用。因此,创建一个返回新打开连接的静态GetConnection()方法。在using语句中使用它,以便它可以尽快关闭并返回到连接池。using(varcn=Database.GetConnection()){//在这里查询你的数据,下面的Dapper示例cn.Execute("updateMyTablesetMyField=@newValue",new{newValue});始终使用它们创建新连接。它们并不是真正从头开始创建的,而是从连接池中获取的。没有性能损失。其实这是最好最正确的方法。请参阅我的使用答案:https://stackoverflow.com/a/9811911/290343框架是否提供内置方法来处理此问题,或者我应该只提供一个函数来处理每个新的数据库连接?两个,实际上。Web服务器是多线程的,因此每个线程都需要自己的数据库连接。只需在需要时创建一个。总结与数据库的实际连接。当连接对象被释放时,实际的连接并没有关闭而是返回到池中。如果您使用相同的连接字符串创建新的连接对象,它只会重用池中的连接。以上是C#学习教程:如何在ASP.NETMVC应用程序中维护数据库连接?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: