[转载]Linq初体验 Linq2SQL示例(原创)

[转载]2.Linq初体验 Linq2SQL示例(原创) – 批发の上帝ぐ – 博客园.

Linq2SQL只是Linq中的一个很小的功能部分,我们今天就来看看用Linq如何对数据库进行增删查改的操作.

我的测试环境是:WIN7 + VS2008 + SQL2005

要想实现用Linq对数据库进行操作,我们要做的事情有如下几个:

1.      创建数据库,表和测试数据

2.      创建Linq To SQL类,配置类和数据库中的表的映射关系

3.      使用Linq的API函数对数据库进行操作

1.      创建数据库,表和测试数据

数据库:

User表:

测试数据:

SQL创建语句:

代码

USE [master] GO Create DataBase [LinQTest] GO USE [LinQTest] GO CREATE TABLE [dbo].[User]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO INSERT INTO [User] ([Name]) VALUES ('zhang san') INSERT INTO [User] ([Name]) VALUES ('li si') INSERT INTO [User] ([Name]) VALUES ('wang wu') INSERT INTO [User] ([Name]) VALUES ('zhang lu') INSERT INTO [User] ([Name]) VALUES ('lao liang') INSERT INTO [User] ([Name]) VALUES ('lao san')

2.      创建Linq To SQL类,配置类和数据库中的表的映射关系

1.      新建一个Linq To SQL类:

2.      点击”服务器资源管理器”,然后在”数据连接”中添加我们刚刚创建好的LinQTest数据库为数据源

3.      将User表拖拽至Linq2SQL设计器中,VS会自动实现User表到User类的映射

4.      VS自动生成的User类的有关信息都在Linq2SQL.designer.cs中,大家可以打开这个文件好好看看里面都是什么内容

3.      好了,数据库准备完毕,映射也做好了,接下来就是看如何使用Linq来操作数据库了.我们就从查询开始吧,回到Main函数中,我们输入如下代码:

代码

//----------------------------------------------------------- // All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd . //----------------------------------------------------------- using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Linq2SQL体验 { /// <summary> /// Program /// /// 修改纪录 /// /// 2010.12.25 版本:1.0 黄聪 创建。 /// /// 版本:1.0 /// /// <author> /// <name>黄聪</name> /// <date>2010.12.25</date> /// </author> /// </summary> class Program { static void Main(string[] args) { //Linq To SQL 体验 Linq2SQLDataContext linq = new Linq2SQLDataContext(); //查询所有的User var users = linq.User.Select(u => u); foreach (var user in users) { Console.WriteLine(user.Name); } } } }

运行结果:

其中核心代码为:

var users = linq.User.Select(u => u);

如何?简单吧?一句SQL语句都不用写,连3层架构都不用搭建,就可以如此简单的对数据库进行查询了.

如果你想查询姓zhang的User,还可以这样写:

代码

//----------------------------------------------------------- // All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd . //----------------------------------------------------------- using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Linq2SQL体验 { /// <summary> /// Program /// /// 修改纪录 /// /// 2010.12.25 版本:1.0 黄聪 创建。 /// /// 版本:1.0 /// /// <author> /// <name>黄聪</name> /// <date>2010.12.25</date> /// </author> /// </summary> class Program { static void Main(string[] args) { //Linq To SQL 体验 Linq2SQLDataContext linq = new Linq2SQLDataContext(); //查询所有的User //var users = linq.User.Select(u => u); //查询姓zhang的User var users = linq.User.Select(u => u).Where(u => u.Name.StartsWith("zhang")); foreach (var user in users) { Console.WriteLine(user.Name); } } } }

运行结果:

其中核心代码为:

var users = linq.User.Select(u => u).Where(u => u.Name.StartsWith("zhang"));

哈哈,是不是也很简单呀?

下面继续讲如何使用Linq进行Insert,在Main中输入如下代码:

代码

//----------------------------------------------------------- // All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd . //----------------------------------------------------------- using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Linq2SQL体验 { /// <summary> /// Program /// /// 修改纪录 /// /// 2010.12.25 版本:1.0 黄聪 创建。 /// /// 版本:1.0 /// /// <author> /// <name>黄聪</name> /// <date>2010.12.25</date> /// </author> /// </summary> class Program { static void Main(string[] args) { //Linq To SQL 体验 Linq2SQLDataContext linq = new Linq2SQLDataContext(); //插入一个Name为黄聪的用户 User newUser = new User(); newUser.Name = "黄聪"; //使用Linq插入该用户到数据库中 linq.User.InsertOnSubmit(newUser); linq.SubmitChanges(); //查询所有的User var users = linq.User.Select(u => u); foreach (var user in users) { Console.WriteLine(user.Name); } } } }

运行结果:

其中核心代码为:

//插入一个Name为黄聪的用户 User newUser = new User(); newUser.Name = "黄聪"; //使用Linq插入该用户到数据库中 linq.User.InsertOnSubmit(newUser); linq.SubmitChanges();

我们继续看如何使用Linq来更新数据:

代码

//----------------------------------------------------------- // All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd . //----------------------------------------------------------- using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Linq2SQL体验 { /// <summary> /// Program /// /// 修改纪录 /// /// 2010.12.25 版本:1.0 黄聪 创建。 /// /// 版本:1.0 /// /// <author> /// <name>黄聪</name> /// <date>2010.12.25</date> /// </author> /// </summary> class Program { static void Main(string[] args) { //Linq To SQL 体验 Linq2SQLDataContext linq = new Linq2SQLDataContext(); //查找出要修改的User User newUser = linq.User.Single(u => u.Id == 1); newUser.Name = "Huang Cong"; //更新至数据库中 linq.SubmitChanges(); //查询所有的User var users = linq.User.Select(u => u); foreach (var user in users) { Console.WriteLine(user.Name); } } } }

运行结果:

其中核心代码为:

//查找出要修改的User User newUser = linq.User.Single(u => u.Id == 1); newUser.Name = "Huang Cong"; //更新至数据库中 linq.SubmitChanges();

最后我们来看看如何用Linq来进行数据的删除:

代码

//----------------------------------------------------------- // All Rights Reserved , Copyright (C) 2010 ,黄聪 , Ltd . //----------------------------------------------------------- using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Linq2SQL体验 { /// <summary> /// Program /// /// 修改纪录 /// /// 2010.12.25 版本:1.0 黄聪 创建。 /// /// 版本:1.0 /// /// <author> /// <name>黄聪</name> /// <date>2010.12.25</date> /// </author> /// </summary> class Program { static void Main(string[] args) { //Linq To SQL 体验 Linq2SQLDataContext linq = new Linq2SQLDataContext(); //查找出要删除的User User delUser = linq.User.Single(u => u.Id == 1); linq.User.DeleteOnSubmit(delUser); //更新至数据库中 linq.SubmitChanges(); //查询所有的User var users = linq.User.Select(u => u); foreach (var user in users) { Console.WriteLine(user.Name); } } } }

运行结果:

其中核心代码为:

//查找出要删除的User User delUser = linq.User.Single(u => u.Id == 1); linq.User.DeleteOnSubmit(delUser); //更新至数据库中 linq.SubmitChanges();

好了,以上就是我们使用Linq对数据库进行增删改查的示例,很简单,

但是Linq的功能绝对不止这么一些,我会在接下来的文章中和大家一起学习的.

再次声明:

本人也是刚刚开始学习Linq,本文仅提供给与我一样的初学者作为参考,

高手们请不要喷饭哈,如果有错误的地方还请各位见谅~~

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏