.net - .Net 中的数据库应用程序最佳实践

标签 .net database

早在 2003 年,我就开始制作使用 PHP 数据库的 Web 应用程序。当然,我一开始只是将 SQL 查询直接放入我的代码中,而不是使用存储过程、预准备语句或任何类型的 ORM 框架。但在当时,这是一种常见的做法,我今天正在编写的代码(大约在那个时候构建的 VB.Net Web 应用程序)就证明了这一点。

该应用程序直接在代码中使用了大约十几个存储过程、一些准备好的语句和大量 SQL 查询。通常,存在获取连接、运行 SQL 查询(字符串)、然后使用读取器使用硬编码字段名称提取数据的冗余代码块。现在是 2011 年,编写这种代码很容易,因此在 2003 年很流行,但我猜这不是最佳实践。它不安全,也不易于维护,而且我还没有接触过存储过程。

我希望超越在应用程序中硬编码 SQL 查询和手动解析响应中的数据的范围。当前在 .Net 中创建数据库应用程序的最佳实践和工具是什么?我听说过 Linq2SQL、Entity Framework、NHibernate 和其他一些技术,但我不知道何时应该使用它们或者它们是否仍然是最新的。

我使用的是 Visual Studio 2010、VB/C# 和 SQL Server 2008 Express

编辑:看起来你们大多数人都在讨论 ORM 软件。这听起来正是我想要的;我们有几个表,其中包含可以作为对象访问的大量信息。我什么时候应该使用标准查询或准备好的语句?

最佳答案

Entity Framework 和 NHibernate 都是所谓的对象/关系映射器。它们都生成一个弥合对象和数据库之间差距的层(有时称为 Object Relational Impedance Mismatch )。

我极力推荐使用 OR/M。两者都好; NHibernate 在安全性方面有一点优势,但它似乎确实有一个更陡峭的学习曲线。我个人使用 Entity Framework ,但这确实只是一个偏好问题。

这两个框架都提供了当您无法完成需要使用该工具完成的操作时的规定,并且您可以直接回调并执行存储过程,因此在这方面您是安全的。

LINQ2SQL 是一种更面向数据库的技术,但它符合 OR/M 的要求。我会直接跳到EF。 EF 是 .Net 3.5 SP1 的一部分,发现 here

以下是使用 EF 从数据库检索客户的一些代码示例:

using (var ctx = new DBEntities())
{
     var employee = (from e in ctx.Employees
            where e.User.UserName == userName
            select e).FirstOrDefault();
}

在我看来,使用 OR/M 的另一个原因是它们倾向于将代码的设计 View 提升为一流的工件。我的意思是,您最终会得到实体之间关系的良好图形 View (因为编辑器是拖放式的),当您最终时间不够时,您不会放弃它。

这是 MS 的入门链接:http://msdn.microsoft.com/en-us/library/bb386876.aspx .

HTH。

关于.net - .Net 中的数据库应用程序最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935934/

相关文章:

.net - 同一主机的 new Uri(..) 和 new UriBuilder(..).Uri 有什么区别?

.net - Wpf 用户控件和 MVVM

MySQL 枚举与集合

mysql - 如何在数据库中存储产品数量

Android SQLiteHelper问题

.net - 为 WP7 构建一个 .NET dll

c# - 为什么我在 IIS CGI 程序中遇到程序集绑定(bind)失败

c# - .net安装项目: How to pass multiple CustomActionData fields

mysql - 空外键

mysql - 如何在表中存储日期