5

我正在使用 .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 参数化很重要,但我看到其他人使用存储过程?他们是其他方式,最佳实践吗?

4

3 回答 3

7

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

休眠

实体框架

Dapper.NET (Stackoverflow ORM)

BL工具包

于 2012-11-21T20:27:09.377 回答
4

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

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

在 2000 年代初期,ORM 席卷了 Java 世界。避免了存储程序。要么是 ORM,要么什么都没有。五年后,Java 开发人员意识到最好的解决方案同时使用 ORM 和存储过程,两者各有千秋。

使用最好的工具来完成这项工作。ORM 可以自动化应用程序中的大部分 CRUD。存储过程有利于添加抽象、添加安全层和优化需要高性能的区域。

选择最适合工作的工具。

于 2012-11-21T21:23:51.257 回答
-1

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

在对 EF 和其他 ORM 的性能进行了一些糟糕的体验之后,我通常会完全避开它们,而只是手工制作数据访问代码或使用代码生成工具来输出为特定应用程序制作的代码。

另一方面,有很多不好的做法,你通过转向参数化来避免一个关键的做法。

就个人而言,我现在在存储过程中看不到任何意义,除非您要完全使用它们 - 即防止在存储过程之外进行任何数据修改。如果是这种情况,它可以让您对可能对您的数据进行的修改类型感到满意。

所以这并不是一个真正的答案——因为真的没有答案——你的问题引发了一个巨大的讨论话题。是时候买些书了,或者忙于 Google。

于 2012-11-21T20:25:11.330 回答