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,本文仅提供给与我一样的初学者作为参考,
高手们请不要喷饭哈,如果有错误的地方还请各位见谅~~
出处:http://www.cnblogs.com/huangcong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。