在.NET中访问数据的最佳实践(非MVC)

时间:2012-11-21 20:18:02

标签: c# asp.net .net

我正在使用.NET 3.5,并查看其他人完成的旧代码并尝试添加安全性并对其进行更新。

访问Web表单项目中的数据的最佳做法是什么?

目前我正在更改代码以使用SQL参数化,如下所示:

using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings["defaultConnection"]].ConnectionString))
{
    using (SqlCommand myCommand = new SqlCommand(sql.ToString(), conn))
    {
        myCommand.Parameters.AddWithValue("search1", mySearchVar);
        ...

我知道SQL参数化很重要,但我看到其他人使用存储过程?这是他们的其他方式,最佳实践吗?

3 个答案:

答案 0 :(得分:7)

如果不仅仅是小型重构并且您有时间重写数据访问层,请使用一些ORM

NHibernate

Entity Framework

Dapper.NET(Stackoverflow ORM)

BLToolkit

答案 1 :(得分:4)

使用ADO.NET没有任何问题。它是推动.NET中所有ORM解决方案的动力。

然而,似乎.NET开发人员成群结队地加入了ORM的行列。 ORM只是数据访问工具箱中的众多工具之一。

在2000年初,ORMs风靡Java世界。商店程序被避开了。这是ORM还是没有。半年后,Java开发人员意识到最好的解决方案同时使用ORM和存储过程,每个都有优势。

使用最佳工具完成工作。 ORM可以从应用程序中自动化大部分CRUD。存储过程适用于添加抽象,添加一层安全性和优化需要高性能的区域。

选择最适合工作的工具。

答案 2 :(得分:-1)

实体框架是一种“最佳实践”,也是微软推动的最佳实践。但是没有最好的数据访问方法。

在对EF和其他ORM的性能有一些不好的经验后,我通常完全避开它们,只需手工制作数据访问代码或使用代码生成工具输出为特定应用程序制作的代码。

另一方面,有许多不良做法,你通过转向参数化来避免关键问题。

我个人认为现在存储过程中没有任何意义,除非你要完全使用它们 - 即防止在存储过程之外进行任何数据修改。如果是这种情况,它可以为您提供对数据可能的修改类型的一些安慰。

所以这不是一个真正的答案 - 因为实际上没有一个 - 你的问题开启了一个大讨论话题。是时候买一些书了,还是忙于谷歌。