【问题标题】:Is it a good practice to perform direct database access in the code-behind of an ASP.NET page?在 ASP.NET 页面的代码隐藏中执行直接数据库访问是一种好习惯吗?
【发布时间】:2010-06-08 10:14:31
【问题描述】:

我是一位经验丰富的开发人员,但我是 Web 应用程序开发的新手。现在我负责开发一个新的 Web 应用程序,我真的可以借鉴经验丰富的 Web 开发人员的一些意见。

我想确切了解经验丰富的网络开发人员在代码隐藏页面中所做的事情。起初我认为最好有一个规则,即所有数据库访问和业务逻辑都应该在代码隐藏页面外部的类中执行。我的想法是,只有 Web 表单所需的逻辑才会在代码隐藏中执行。我仍然认为所有业务逻辑都应该在其他类中执行,但我开始认为,如果代码隐藏可以访问数据库直接查询它,而不是调用其他类来接收数据集,那就没问题了或收集回来。

我们将不胜感激。

【问题讨论】:

  • 您能否将您的问题重新表述得更具体一些?标题非常模糊,可能会被关闭。但是,听起来您的问题可能只是“在 ASP.NET 页面的代码隐藏中执行直接数据库访问是一种好习惯,还是应该在抽象之后完成所有数据库访问?”与要求“最佳”实践的通用列表的问题相比,这可能会得到更好的答案。

标签: c# asp.net


【解决方案1】:

如果您严格使用 asp.net(并且不使用 MVC 模型),那么考虑到 N 层开发和分离,您就走在了正确的轨道上。

您的代码隐藏应该与表示/UI 相关,并且应该依赖中间层的业务逻辑等。

一般来说,拆分应用最简单的方法是在一个 VS 解决方案中拥有多个项目,例如:

  • ASP.NET Web 应用程序项目(演示/UI)
  • C# 类库 - 业务逻辑层
  • C# 类库 - 数据层
  • 数据库(SQL 或其他)

当然,您可以根据需要拥有许多其他库和层,但本质上,在非 Web 环境中工作的 n 层方法在此处使用相同的原则非常适用。

【讨论】:

  • 谢谢KP。这正是我设置解决方案的方式。如果我们只是执行查询,是否允许 ASP.Net 项目访问数据库而不通过业务层?看起来我们在试图避免这种情况时遇到了很多麻烦,如果我们可以直接从代码隐藏中查询数据库,生活会简单得多。
  • 我总是更喜欢代码隐藏和数据库之间的层,但即使是一些 asp.net Web 控件(例如 SQLDataSource),为了简单起见,也允许直接在标记中进行 SQL 查询。这绝对没有完美的答案...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
  • 2012-02-21
  • 2019-06-29
  • 2016-03-21
  • 2022-06-23
  • 2010-12-30
相关资源
最近更新 更多