SQL连接

时间:2013-09-03 09:50:23

标签: c# sql asp.net-mvc asp.net-mvc-4

我正在做一个DataBase密集型应用程序,因为我是ASP.NET MVC4 C#的新手,我想出了一些疑问:

1)打开连接并为所有请求保持打开是否更好?或者为每个请求设置Open()Close()? (如果第一个选项是最好的,何时/何处关闭连接?)

2)我来自PHP,我习惯在FrontController上打开一个连接(刚开始时)并在结束时关闭它,所以每个请求只打开一个连接,用于所需的一切,并在提供HTTP响应之前删除它。 这是进入ASP.NET MVC 4的方式吗?

3)任何代码内的性能提示将不胜感激!! :)

4 个答案:

答案 0 :(得分:1)

您可以查看此主题,它可以帮助您SQL连接和closing / disposing连接。

SQL Connection

SQL声明中使用using连接的代码段;

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 further reading on the SQL connection

答案 1 :(得分:1)

进入MVC的方法是使用ORM,例如EntityFrameworknHibernate.

Object Relational Mapper将为您处理连接处理,您的主要目标是通过DBContext或某种类型的存储库对象获取信息。使用ADO.NETSqlConnection对象并不是纯粹的MVC,尽管它们仍然可以在应用程序中使用。

答案 2 :(得分:1)

1)更好的是:

  

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

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

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

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

希望这会对你有所帮助。

答案 3 :(得分:0)

恕我直言,ASP.Net 4的方法是使用实​​体框架或其他一些ORM,如NHibernate:D

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