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 Connections

您可以看看这个线程,它将帮助您处理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.NETSqlConnection对象并不是真正的MVC,尽管它们仍然可以在应用程序中使用。

1)更好的是:

为每个请求生成Open()和Close()

当在ADO.net Close()中使用连接池时,会将数据库连接返回到连接池(而不是断开与数据库服务器的连接),然后可以在下一个请求中使用。

2) 你可以像你的PHP代码一样做,我的经验是:当数据库连接打开时,尽快关闭/释放它(在数据库中完成查询后),有时这有助于提高请求的响应时间。

3) 不仅数据库连接,那些稀缺的资源(文件句柄、tcp连接等)也应该尽快关闭/释放。

希望这对你有帮助。

IMHO,在ASP.Net4中的方法是使用实体框架或其他一些ORM,如NHibernate:D

如果您决定使用自己的数据库访问层,主要取决于应用程序的具体情况。例如,如果你有一个信息量很大的网站,比如eshop,那么在一个连接上加载大量信息会加快速度,但如果你期望有很多用户,那么可能没有足够的连接可用于这种工作方法。