首页 / 软件开发 / .NET编程技术 / ADO.NET与ORM的比较 (1)ADO.NET实现CRUD
ADO.NET与ORM的比较 (1)ADO.NET实现CRUD2010-11-20 51cto博客 周金桥说明:个人感觉在Java领域大型开发都离不了ORM的身影,所谓的SSH就是 Spring+Struts+Hibernate,除了在学习基础知识的时候被告知可以使用JDBC操 作数据库之外,大量的书籍中都是讲述使用Hibernate这个ORM工具来操作数据。 在.NET中操作的方式有多种,除了最直接的方式就是使用ADO.NET之外, 还可以使用NHibernate这个Hibernate在.NET中的实现ORM,如果你对第三方的 ORM持怀疑态度,你还可以使用来自微软的实现、根正苗红的Linq或者 EntityFramework。大部分从早期就开始使用.NET开发的程序员可能对ADO.NET有种迷恋,使用 ADO.NET可以充分将我们早期的SQL知识发挥得淋漓尽致,并且出于对性能的考虑 ,有些人对.NET中的ORM还保持一种观望态度,包括我自己也是这种态度。不过 即使在实际开发中不用,并不代表我们不能去了解和比较这些技术,任何事物的 出现和消亡总有其原因的,我们可以了解它们的优点和长处。所以本人抽出了几 个周末的时间分别用ADO.NET、NHibernate、Linq和 EntityFramework来实现对 数据库单表数据的创建、读取、更新和删除操作,也就是所谓的CRUD (C:Create/R:Read /U:Update/D:Delete)。通过实现相同功能的比较,大家自己判断那种方式更适合自己。需要说明的 是,如果在VS2008中使用 EntityFramework就需要安装VS2008SP1。在开始演示之前先准备好数据,在本系列中所使用的数据库是SQL Server2005,创建和初始化数据库数据的代码如下:/****** 对象: Table [dbo].[UserInfo] 脚本日期: 03/08/2010 12:20:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N"[dbo].[UserInfo]") AND type in (N"U"))
BEGIN
CREATE TABLE [dbo].[UserInfo](
[UserID] [int] IDENTITY(1,1) NOT NULL,
[UserName] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
[RealName] [nvarchar](8) COLLATE Chinese_PRC_CI_AS NOT NULL,
[Age] [tinyint] NOT NULL,
[Sex] [bit] NOT NULL,
[Mobile] [char](11) COLLATE Chinese_PRC_CI_AS NULL,
[Phone] [char](11) COLLATE Chinese_PRC_CI_AS NULL,
[Email] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
CONSTRAINT [PK_UserInfo] PRIMARY KEY CLUSTERED
(
[UserID] ASC
)WITH (IGNORE_DUP_KEY = OFF)
)
END
GO
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N"[dbo].[UserInfo]") AND name = N"IX_UserName")
CREATE UNIQUE NONCLUSTERED INDEX [IX_UserName] ON [dbo]. [UserInfo]
(
[UserName] ASC
)WITH (IGNORE_DUP_KEY = ON)
GO
下面开始演示如何使用ADO.NET实现CRUD功能。一、配置创建一个控制台或者类库项目,并且添加一个app.config配置文件,在此文 件中添加数据库配置信息,如下:<connectionStrings>
<add name="Conn" connectionString="Data Source=zhou;Initial Catalog=AspNetStudy;User ID=sa;Password=jerry" />
</connectionStrings>