2010-04-23 72 views
3

我正在构建一个新的Web应用程序项目,并且被许多执行数据访问的方法所困惑。我在SQL上后退了一下,并且对使用LINQ to SQL还是使用ADO.net有点困惑?新Web应用程序的最佳数据访问方法

使用LINQ/SQL优于ADO.net有哪些优缺点?

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

我的问题是什么是cleanes和最有成效和专业的方式为asp.net中的web应用程序创建DAL?

谢谢

回答

2

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

从您的代码调用SP意味着您的应用程序逻辑被放置在应用程序代码以外的地方。这是一条路,但目前由于TDD而越来越不受欢迎。

最好的方法是将DAL创建为独立的逻辑层,自己的程序集。

1

你应该检查出一些ORM框架,如NHibernate的:http://nhibernate.info

+0

感谢您的答复。我想在LINQ/SQL或ADO.net之间做出决定? – user98454 2010-04-23 11:03:54

4

有什么优点和使用LINQ/SQL过 ADO.net的 缺点是什么?

  • LINQ2SQL产生一系列 类,是 你的(选择)数据库中的表1对1的映射 - 这意味着你不必用编写繁琐和容易出错的数据访问代码 ado.net自己。
  • 如果您打算使用自定义对象到关系映射(非1对1),Linq2sql可能无法为您提供足够的值 - 当然,您仍然可以使用linq2sql,但这意味着需要额外的层之间。
  • Linq2sql允许您使用强大的linq表达式轻松查询数据库。编写linq查询为您提供intellisense,如果您将查询作为字符串嵌入到ado.net命令中,或者在management studio中编写存储过程,您将无法获得该查询。
  • 使用linq,你不需要知道t-sql,而如果你使用ado.net(尽管如果你的linq查询开始做奇怪的事情,它肯定会有优势!)。编写提供分页结果集的t-sql查询的复杂性的一个例子就是.Skip(page * size).Take(size)
  • Linq2sql自动创建使用参数化查询的t-sql,它比使用字符串构建查询的手写ado.net代码更安全,可防范SQL注入攻击。
  • Linq2sql在存储过程中不能很好地工作 - 如果使用sprocs,最好不要打扰linq2sql。
  • Linq2sql可能会要求您的数据库表锁定得比使用存储过程编写ado.net代码的锁定要少。

如果是ADO。net,那么最好的 的方式检索数据是指 调用存储过程还是 直接调用t-sql代码?

  • 如果你想排除LINQ2SQL和ado.net发生数据检索是更好的选择,我想如果你直接调用T-SQL代码非常频繁,甚至不惜一切感到惊讶。我几乎肯定会希望你使用存储过程的原因是你的查询过于复杂,使用linq和/或安全性要求。

我的问题是什么是干净和在asp.net web应用创建DAL的最effiecient和专业的方式?

  • 在我看来,最干净的DAL可能会使用LINQ2SQL,因为它是SQL Server的最亮和最有针对性的ORM(假设你的SQL Server中仍然有兴趣的,当然这个具体的问题)。
  • 效率最高的可能是使用ado.net的手写书签,但这可能会浪费时间,因为您会发现诸如linq2sql这样的工具比90%的开发人员编写更好的查询。
  • 在我看来,最专业的DAL可能是linq2sql,但由于更多的灵活性,它更可能是NHibernate的实体框架(正如其他答案所建议的那样)。
  • 我在清洁和专业方面的最后选择DAL肯定是一个手写的ado.net之一。
1

我毫无疑问会去Linq2Sql。

下载Linqpad并玩弄所包含的示例以开始使用。

0

如果您希望在性能方面获得有效的数据访问,则不会比纯ADO.NET更快。你可以看看这里:http://ormbattle.net/

相关问题