LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据 (转)
http://www.cnblogs.com/yukaizhao/archive/2010/05/13/linq_to_sql_1.html
LINQ和 LINQ to SQL 都已经不是一个新事物了,但是我接触的比较晚,本着绝知此事要躬行的态度,决定写这个系列。
本文使用的测试环境是VS 2010,和sql server 2005数据库。
1. 从CUD开始,如何使用LINQ to SQL插入、修改、删除数据
3. 查询 延迟加载与立即加载,使用LoadWith和AssociateWith
4. 查询 inner join,left outer join
5. Linq to SQL中的聚合grouping having
第一篇 从CUD开始,如何使用LINQ to SQL插入、修改、删除数据
准备工作,现在数据库中建好测试表Student,这个表只有三个字段ID,Name,Hometown,其中ID为int类型的自增长字段,Name和Howmtown是nvarchar类型
1. 打开VS2010新建控制台应用程序,然后添加LINQ to SQL Class,命名为DbApp.dbml,新建dbml文件之后,可以打开server explorer,建立数据库连接,并将我们新建的表拖到dbml文件中,结果如下图

2. 可以通过点击dbml文件空白处,按F4显示dbml属性,可以修改Context和生成实体的命名空间

3. 到现在为止VS2010通过工具为我们创建好了数据表对应实体类和数据表操作添,改,删的方法,现在开始实践
1) 添加 Add
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
static void Add(){ //添加一个Student Student aStudent = new Student { Name = "张小二", Hometown = "南海观音院" }; Console.WriteLine("----------begin Add a student"); using (DbAppDataContext db = new DbAppDataContext()) { db.Log = Console.Out; db.Students.InsertOnSubmit(aStudent); db.SubmitChanges(); } Console.WriteLine("----------End Add a student");} |
输出的sql语句
|
1
2
3
4
5
6
7
|
INSERT INTO [dbo].[Student]([Name], [Hometown])VALUES (@p0, @p1)SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]-- @p0: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [张小二]-- @p1: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [南海观音院]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1 |
2) 使用linq to sql执行Edit 编辑操作
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
private static void Edit(int id){ Console.WriteLine("----------begin edit"); using (DbAppDataContext db = new DbAppDataContext()) { db.Log = Console.Out; //取出student var editStudent = db.Students.SingleOrDefault<Student>(s=>s.ID == id); if (editStudent == null) { Console.WriteLine("id错误"); return; } //修改student的属性 editStudent.Name = "张小三"; editStudent.Hometown = "张家口张家寨张家营"; //执行更新操作 db.SubmitChanges(); } Console.WriteLine("---------end edit Student");} |
输出的sql语句
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
SELECT [t0].[ID], [t0].[Name], [t0].[Hometown]FROM [dbo].[Student] AS [t0]WHERE [t0].[ID] = @p0-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [6]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1UPDATE [dbo].[Student]SET [Name] = @p3, [Hometown] = @p4WHERE ([ID] = @p0) AND ([Name] = @p1) AND ([Hometown] = @p2)-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [6]-- @p1: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [张小二]-- @p2: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [南海观音院]-- @p3: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [张小三]-- @p4: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [张家口张家寨张家营]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1 |
3)使用linq to sql 执行删除操作
执行代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
static void Delete(int id){ Console.WriteLine("-----------begin delete a student"); using (DbAppDataContext db = new DbAppDataContext()) { db.Log = Console.Out; //取出student var student = db.Students.SingleOrDefault<Student>(s => s.ID == id); if (student == null) { Console.WriteLine("student is null"); return; } db.Students.DeleteOnSubmit(student); db.SubmitChanges(); } Console.WriteLine("------------end Delete student");} |
生成的sql语句:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
SELECT [t0].[ID], [t0].[Name], [t0].[Hometown]FROM [dbo].[Student] AS [t0]WHERE [t0].[ID] = @p0-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [6]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1DELETE FROM [dbo].[Student] WHERE ([ID] = @p0) AND ([Name] = @p1) AND ([Hometown] = @p2)-- @p0: Input Int (Size = -1; Prec = 0; Scale = 0) [6]-- @p1: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [张小三]-- @p2: Input NVarChar (Size = 4000; Prec = 0; Scale = 0) [张家口张家寨张家营]-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.1 |
总结:通过以上实践可以看到使用linq to sql执行增改删操作,非常方便,我们甚至不需要学习任何sql相关的知识。
LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据 (转)的更多相关文章
- 【SQL系列】深入浅出数据仓库中SQL性能优化之Hive篇
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[SQL系列]深入浅出数据仓库中SQL性能优化之 ...
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
http://www.cnblogs.com/yukaizhao/archive/2010/05/13/linq_to_sql_1.html LINQ和 LINQ to SQL 都已经不是一个新事物了 ...
- 二、SQL系列之~常见51道SQL查询语句
[写在前面~~] [PS1:建议SQL初学者一定要自己先做一遍题目,这样才有效果~~(做题时为验证查询结果是否正确,可更改表中数据)] [PS2:文末最后一条代码整合了全部51道题目及答案~~] [P ...
- SQL 必知必会·笔记<14>更新和删除数据
1. 更新数据 基本的UPDATE语句,由三部分组成: 要更新的表 列名和它们的新值 确定要更新那些行的过滤条件 更新单列示例: UPDATE Customers SET cust_email = ' ...
- sql系列(基础)-第二章 限制和排序数据
更好的看↑代码点击VIEW PLAN 第二章 约束和排序数据 1. 在 emp 表中选择工资介于 1500 到 2500 的员工的信息: 注意:使用 between 下边界 and 上边界时.条件包括 ...
- Sql server之路 (五)插入多条数据
public bool GetDataUsingDataTaskReason(StationReasonCollection reason) { try { strCon.Open(); DateTi ...
- 【 D3.js 入门系列 — 2.1 】 选择、插入、删除元素
1. select 和 selectAll 的区别 在 D3 中,选择元素的函数有两个:select 和 selectAll,它们的使用非常重要.先说明一下它们的区别: select 是选择所有指定元 ...
- 数据库SQL语言学习--上机练习3(插入 更新 删除)
上机练习3 . 将一个新学生记录(学号::姓名:陈冬:性别:男:所在系:信息系:年龄:20岁)插入到Student表中: ALTER TABLE Student ,); UPDATE Student ...
- MySQL基本SQL语句之数据插入、删除数据和更新数据
一.INSERT插入数据: 方法一:批量插入 基本语法: INSERT INTO tb_name (col1, col2, ...) VALUES (val1, val2, ...)[,(val1, ...
随机推荐
- SQL Server System.Data.SqlClient.SqlException:已成功于服务器建立连接,但是在 登录前的握手期间发生错误
一.错误描述 错误名称如上.整体错误如下: System.Data.EntityException 基础提供程序在Open上失败--> System.Data.SqlClient.SqlExce ...
- Linux内核分析 02
二,操作系统是如何工作的 1.函数调用堆栈 三大法宝:存储程序计算机 函数调用堆栈 中断机制 堆栈:是C语言程序运行时必须的一个记录调用路径和参数的空间.是计算机内部现成的东西,我们直接使用. 包括函 ...
- 【Dubbo基础】dubbo学习过程、使用经验分享及实现原理简单介绍
一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不 ...
- Facade(外观)
意图: 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 适用性: 当你要为一个复杂子系统提供一个简单接口时.子系统往往因为不断演化而变 ...
- 人工神经网络 Artificial Neural Network
2017-12-18 23:42:33 一.什么是深度学习 深度学习(deep neural network)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高 ...
- 雷林鹏分享:Ruby 文件的输入与输出
Ruby 文件的输入与输出 Ruby 提供了一整套 I/O 相关的方法,在内核(Kernel)模块中实现.所有的 I/O 方法派生自 IO 类. 类 IO 提供了所有基础的方法,比如 read. wr ...
- jquery.validate验证表单
添加引用 <script src="/${appName}/commons/js/validate/jquery.validate.min.js"></scrip ...
- C# DataTable Compute方法的使用
在开发中需要对DataTable的数据进行处理,比如累加,求最大最小及平均值等,以前都采用手工对DataTable进行循环并计算的方式,现在发现DataTable的Compute方法可以轻松实现这些功 ...
- 个人知识管理系统Version1.0开发记录(12)
最近碰到个问题,在五个工作日内阅读一个百万行左右代码量的新项目集合,如何解决呢? 第一个工作日,环境观察.待在那个项目组,看项目成员们在做些什么事情,开发,测试,聊天,或多或少可以收集到一些项目相关的 ...
- wikioi 1028 花店橱窗布置 最大权匹配
中文题意不描述. 链接:http://wikioi.com/problem/1028/ 这题一开始很裸的最大权二分匹配.但是原来没有接触过,KM的这个最大权不大会.然后一开始以为用最大费用最大流直接就 ...