SQL Connections
本文关键字:Connections SQL | 更新日期: 2023-09-27 18:30:09
我正在做一个数据库密集型应用程序,由于我是ASP.NET
MVC4
C#
:的新手,所以我遇到了一些疑问
1) 打开一个连接并对所有请求保持打开状态更好吗?或者为每个请求制作Open()
和Close()
?(如果第一个选项是最好的,我什么时候/在哪里关闭连接?)
2) 我来自PHP,我习惯于在FrontController
上打开一个连接(就在开始时)并在结束时关闭它,所以每个请求只打开一个链接,将其用于所有需要的内容,并在提供HTTP
响应之前将其删除ASP.NET
MVC 4
就是这样吗
3) 任何代码内性能提示都将不胜感激!!:)
您可以看看这个线程,它将帮助您处理SQL
连接和连接的closing / disposing
。
SQL连接
在using
语句中使用SQL
连接的代码片段;
public void InsertMember(Member member)
{
string INSERT = "INSERT INTO Members (Name, Surname, EntryDate) VALUES (@Name, @Surname, @EntryDate)";
using (sqlConnection = new SqlConnection(sqlConnectionString_WORK))
{
sqlConnection.Open();
using (SqlCommand sqlCommand = new SqlCommand(INSERT, sqlConnection))
{
sqlCommand.Parameters.Add("@Name", SqlDbType.VarChar).Value = member.Name;
sqlCommand.Parameters.Add("@Surname", SqlDbType.VarChar).Value = member.Surname;
sqlCommand.Parameters.Add("@EntryDate", SqlDbType.Date).Value = member.EntryDate;
sqlCommand.ExecuteNonQuery();
}
}
}
这不仅有助于举例,而且有助于对概念进行解释。
希望这能有所帮助。
MSDN对SQL
连接的进一步阅读
使用MVC
的方法是使用ORM
,例如EntityFramework或nHibernate。
Object Relational Mapper
将为您处理连接,您的主要目标是通过DBContext
或某种存储库对象获取信息。使用ADO.NET
和SqlConnection
对象并不是真正的MVC,尽管它们仍然可以在应用程序中使用。
1)更好的是:
为每个请求生成Open()和Close()
当在ADO.net Close()中使用连接池时,会将数据库连接返回到连接池(而不是断开与数据库服务器的连接),然后可以在下一个请求中使用。
2) 你可以像你的PHP代码一样做,我的经验是:当数据库连接打开时,尽快关闭/释放它(在数据库中完成查询后),有时这有助于提高请求的响应时间。
3) 不仅数据库连接,那些稀缺的资源(文件句柄、tcp连接等)也应该尽快关闭/释放。
希望这对你有帮助。
IMHO,在ASP.Net4中的方法是使用实体框架或其他一些ORM,如NHibernate:D
如果您决定使用自己的数据库访问层,主要取决于应用程序的具体情况。例如,如果你有一个信息量很大的网站,比如eshop,那么在一个连接上加载大量信息会加快速度,但如果你期望有很多用户,那么可能没有足够的连接可用于这种工作方法。