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

发布于 2024-08-29 23:53:47 字数 268 浏览 1 评论 0原文

我正在构建一个新的 Web 应用程序项目,并且对执行数据访问的众多方法感到困惑。我正在对 SQL 进行后端处理,并且有点困惑是使用 LINQ to SQL 还是传统的 ADO.net ?

与 ADO.net 相比,使用 LINQ/SQL 的优点和缺点是什么?

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

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

谢谢

I'm building a new web application project and am confused by the numerous methods of performing data access. I'm backending on SQL and a bit confused whether to use LINQ to SQL or trtaditional ADO.net ?

what are the advantages and disadvantages of using LINQ/SQL over ADO.net?

If it is ADO.net,then what is the best way to retrieve data means either calling the stored procedures or directly calling the t-sql code?

My question is what is cleanes and most effiecient and professional way of creating DAL for webapplication in asp.net?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

放血 2024-09-05 23:53:47

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

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

如果是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 的实体框架(正如其他答案所建议的)。
  • 就清洁度和专业性而言,我最后选择的 DAL 肯定是手写的 ado.net 的。

What are the advantages and
disadvantages of using LINQ/SQL over
ADO.net?

  • Linq2sql generates a series of
    classes that are 1-to-1 mappings of
    your (selected) database tables - this means you don't have to write tedious and error prone data access code
    using ado.net yourself.
  • Linq2sql may not provide enough value for you if you intend on using a custom object-to-relational mapping (non 1-to-1) - of course you could still use linq2sql, but it would mean having an extra layer in between.
  • Linq2sql allows you to easily query the database using powerful linq expressions. Writing linq queries provides you with intellisense that you wouldn't get if you embedded your queries as strings inside ado.net commands, or wrote stored procs in management studio.
  • Using linq, you don't need to know t-sql while you will if you use ado.net (although it can definitely an advantage if your linq queries start doing strange things!). An example of this the complexity of writing t-sql queries that provide paging resultsets simply becomes .Skip(page * size).Take(size).
  • Linq2sql automatically creates t-sql that uses parameterised queries which is much more secure against sql injection attacks than handwritten ado.net code which builds up a query using a string.
  • Linq2sql doesn't work very well with stored procedures - you are probably better off not bothering with linq2sql if using sprocs.
  • Linq2sql could require your database tables to be less-tightly locked down than would be possible writing ado.net code using stored procedures.

If it is ADO.net,then what is the best
way to retrieve data means either
calling the stored procedures or
directly calling the t-sql code?

  • If you'd ruled out linq2sql, and ado.net happened to the better choice for data retrieval, I would be surprised if you were directly calling t-sql code very often or even at all. I would almost certainly expect you to be using stored procedures for reasons that you have queries that are too complex using linq, and/or security requirements.

My question is what is cleanest and most effiecient and professional way of creating DAL for webapplication in asp.net?

  • In my opinion, the cleanest DAL would probably use linq2sql as it is the lightest and most targeted ORM for SQL Server (assuming your still interested in SQL Server for this specific question of course).
  • The most efficient could be the handwritten one using ado.net, but this is probably a waste of time as more often than not, you will find a tool such as linq2sql writing better queries than 90% of developers.
  • In my opinion, the most professional DAL could be linq2sql, but it is more likely to be the Entity Framework of NHibernate (as other answers have suggested) due to more flexibility.
  • My last choice DAL in terms of cleanliness and professionalism would definitely be a handwritten ado.net one.
你的背包 2024-09-05 23:53:47

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

从代码中调用 SP 意味着您的应用程序逻辑放置在应用程序代码之外的其他位置。这是一种可行的方法,但目前由于 TDD 的原因越来越不受欢迎。

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

The best way to go is O/RM. Small apps Linq2Sql, larger apps Entity Framework 4 or NHibernate (Fluent NHibernate).

Calling SPs from your code means that your app logic is placed somewhere else than in the app code. It's a way to go but at present less and less popular because of TDD.

The best way is to create DAL into a separated logic layer, own assembly.

多像笑话 2024-09-05 23:53:47

毫无疑问我会选择 Linq2Sql。

下载 Linqpad 并试用随附的示例即可开始使用。

I would without doubt go for Linq2Sql.

Download Linqpad and play around with the included samples to get started.

寒冷纷飞旳雪 2024-09-05 23:53:47

您应该查看一些 ORM 框架,例如 NHibernate:http://nhibernate.info

You should check out some ORM frameworks, like NHibernate: http://nhibernate.info

流绪微梦 2024-09-05 23:53:47

如果您希望在性能方面实现高效的数据访问,那么没有什么比纯 ADO.NET 更快的了。您可以在这里查看:http://ormbattle.net/

If you want efficient data access in terms of performance than there is nothing faster than pure ADO.NET. You chan check it out here: http://ormbattle.net/.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文