Asp.net 新Web应用程序的最佳数据访问方法

Asp.net 新Web应用程序的最佳数据访问方法,asp.net,ado.net,Asp.net,Ado.net,我正在构建一个新的web应用程序项目,对执行数据访问的众多方法感到困惑。我正在回溯SQL,有点困惑是使用LINQtoSQL还是传统的ADO.net 在ADO.net上使用LINQ/SQL有哪些优点和缺点 如果是ADO.net,那么检索数据的最佳方法是调用存储过程还是直接调用t-sql代码 我的问题是,在asp.net中为Web应用程序创建DAL的最干净、最有效、最专业的方法是什么 谢谢最好的方法是O/RM。小型应用程序Linq2Sql,大型应用程序实体框架4或NHibernate(Fluent

我正在构建一个新的web应用程序项目,对执行数据访问的众多方法感到困惑。我正在回溯SQL,有点困惑是使用LINQtoSQL还是传统的ADO.net

在ADO.net上使用LINQ/SQL有哪些优点和缺点

如果是ADO.net,那么检索数据的最佳方法是调用存储过程还是直接调用t-sql代码

我的问题是,在asp.net中为Web应用程序创建DAL的最干净、最有效、最专业的方法是什么


谢谢

最好的方法是O/RM。小型应用程序Linq2Sql,大型应用程序实体框架4或NHibernate(Fluent NHibernate)

从您的代码调用SPs意味着您的应用程序逻辑位于应用程序代码之外的其他位置。这是一条路要走,但目前由于TDD越来越不受欢迎


最好的方法是将DAL创建到一个独立的逻辑层,即自己的程序集中。

您应该查看一些ORM框架,如NHibernate:

它的优点和优点是什么 在服务器上使用LINQ/SQL的缺点 ADO.net

  • Linq2sql生成一系列 是的1对1映射的类 您的(选定的)数据库表-这意味着您不必编写繁琐且容易出错的数据访问代码 自己使用ado.net
  • 如果打算使用自定义对象到关系映射(非1对1),Linq2sql可能无法为您提供足够的价值-当然,您仍然可以使用Linq2sql,但这意味着在两者之间有一个额外的层
  • Linq2sql允许您使用功能强大的linq表达式轻松查询数据库。编写linq查询为您提供了intellisense,如果您将查询作为字符串嵌入ado.net命令中,或者在ManagementStudio中编写存储过程,您将无法获得这种智能感知
  • 使用linq,您不需要了解t-sql,而使用ado.net则需要了解t-sql(尽管如果您的linq查询开始做奇怪的事情,这肯定是一个优势!)。例如,编写提供分页结果集的t-sql查询的复杂性就变成了
    .Skip(page*size).Take(size)
  • Linq2sql自动创建使用参数化查询的t-sql,这比使用字符串构建查询的手写ado.net代码更安全,更能抵御sql注入攻击
  • Linq2sql不能很好地与存储过程一起工作——如果使用存储过程,您最好不要使用Linq2sql
  • 与使用存储过程编写ado.net代码相比,Linq2sql可能要求数据库表的锁定不那么严格
如果是ADO.net,那么什么是最好的 检索数据的方法意味着 调用存储过程或 直接调用t-sql代码

  • 如果您排除了linq2sql,而ado.net恰好是数据检索的更好选择,那么如果您经常甚至根本不直接调用t-sql代码,我会感到惊讶。我几乎肯定希望您使用存储过程,因为使用linq和/或安全需求时查询太复杂
我的问题是,在asp.net中为Web应用程序创建DAL最干净、最有效、最专业的方法是什么

  • 在我看来,最干净的DAL可能会使用linq2sql,因为它是SQL Server中最轻、最有针对性的ORM(当然,假设您仍然对SQL Server这个特定问题感兴趣)
  • 最有效的可能是使用ado.net的手写查询,但这可能是浪费时间,因为通常情况下,您会发现像linq2sql这样的工具比90%的开发人员编写的查询更好
  • 在我看来,最专业的DAL可能是linq2sql,但更可能是NHibernate的实体框架(正如其他答案所建议的),因为它更具灵活性
  • 在清洁和专业方面,我最后的选择肯定是手写的ado.net

    • 毫无疑问,我会选择Linq2Sql


      下载并使用附带的示例开始

      如果您想要在性能方面高效地访问数据,没有什么比纯ADO.NET更快的了。您可以在这里查看:。

      谢谢您的回复。我想在LINQ/SQL或ADO.net之间做出决定?