LINQ和 LINQ to SQL 都已经不是一个新事物了,但是我接触的比较晚,本着绝知此事要躬行的态度,决定写这个系列。

本文使用的测试环境是VS 2010,和sql server 2005数据库。

第一篇       从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

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语句

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 编辑操作

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(s=>s.ID == id);

if (editStudent == null)

{

Console.WriteLine("id错误");

return;

}

//修改student的属性

editStudent.Name = "张小三";

editStudent.Hometown = "张家口张家寨张家营";

//执行更新操作

db.SubmitChanges();

}

Console.WriteLine("---------end edit Student");

}

输出的sql语句

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.1

UPDATE [dbo].[Student]

SET [Name] = @p3, [Hometown] = @p4

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) [南海观音院]

-- @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 执行删除操作

执行代码:

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(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语句:

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.1

DELETE 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相关的知识。

我有两点疑惑,请各位指点:

1.  是否是在执行update和delete时必须先获得实体,然后才能执行操作,我尝试在update时,不去数据库中获取实体,而是自己声明一个实体,然后去删除,但是失败了

2.  在生成的update和delete的条件语句中包含name=@p和hometown=@p的语句,按理说link to sql已经知道id是唯一的主键,为什么还会传这些没有的条件进去的

vs2010 mysql linq to sql 系列_LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据...相关推荐

  1. mysql将查到的数据删除_MySQL基本SQL语句之数据插入、删除数据和更新数据 | 旺旺知识库...

    一.INSERT插入数据: 方法一:批量插入 基本语法: INSERT INTO tb_name (col1, col2, ...) VALUES (val1, val2, ...)[,(val1, ...

  2. Mysql 数据插入 修改删除

    MYSQL基础上机练习题(二) 数据插入.修改.删除 一.实验目的: 数据插入.修改.删除 数据表的复制 字段分列 二.实验内容: 对实验一所展示的表进行数据输入.修改.删除  以下为Employee ...

  3. c 更新mysql数据_MySQL插入更新删除数据

    数据插入 插入完整的行 INSERT INTO customers VALUES(NULL, 'Pep E. LaPew', '100 Main Street', 'Los Angeles', 'CA ...

  4. mysql入门到跑路_MySQL 24小时入门笔记(3),插入和删除,删库到跑路

    MySQL 24小时入门笔记 插入 INSERT INSERT用法非常简单.现在我们有表students如下. 列名 类型 约束 id int primary key name char(16) NO ...

  5. 05_通过sql操作表中的数据_插入修改删除查询

    123131 转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/7014978.html

  6. eclipse给mysql修改表数据_Eclipse中java向数据库中添加数据,更新数据,删除数据...

    ASP.NET网页动态添加.更新或删除数据行 看过此篇 http://www.cnblogs.com/insus/p/3247935.html的网友,也许明白Insus.NET是怎样实现动态添加数据行 ...

  7. MySQL删除数据表(DORP TABLE语句)

    在 MySQL 数据库中,对于不再需要的数据表,我们可以将其从数据库中删除.下面我们来了解一下 MySQL 数据库中数据表的删除方法. 基本语法 当需要删除一个表的时候,可以使用 DROP TABLE ...

  8. 05-JDBC连接MySQL数据库【删除数据】

    JDBC自学教程–终篇总结: 地址:http://blog.csdn.net/baidu_37107022/article/details/72600018 1.实现修改步骤 前三个步骤:注册.获得连 ...

  9. SQL工具性能实测:居然比Navicat还快,数百万行数据导出仅51秒

    如今的SQL语言逐渐成为职场人士必备的能力.为了让更多SQL用户有一款免费又好用的SQL工具,麦聪软件于2023年1月初发布了一款Web版SQL工具SQL Studio,一经推广就赢得了众多用户的注册 ...

  10. mysql删除数据后释放磁盘空间

    drop table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM : truncate table table_name立刻释放磁盘空间 ,不管是 Innodb和My ...

最新文章

  1. 作为程序员,我是怎么通过一个方法记住7000个单词的!
  2. ORA-03135 ,ORA-02050到底什么原因?
  3. mysql session变量_mysql 系统变量和session变量
  4. java结果集分页太慢_巨大结果集的分页错误
  5. 对于一颗具有n个结点,度为4的树来说,( )
  6. 「权威发布」2019年大学生电子设计竞赛获奖名单
  7. 表面配准论文1--基于高阶图匹配方法的稠密表面配准
  8. 三级菜单 python_python三级菜单
  9. 终于!华为在欧盟注册新商标“Harmony”;亚马逊AWS宣布张文翊“新官上任”;甲骨文失去竞购100亿美元国防部云计算合同资格...
  10. Java类加载器 以及类加载器的委托模型
  11. 【星云测试】开发者测试(2)-采用精准测试工具对J2EE Guns开发框架进行测试
  12. 常用文件格式转换大全: PDF转Word,WORD转PDF转换器,DOCX转DOC转换
  13. 交换机/路由器实验:保姆级别的iperf安装和使用教程
  14. Apache Flume 1.7深入浅出,快速入门
  15. ES6(ECMAScript6)知识总结(二)
  16. [篇二章四]_安装 Windows 11 系统
  17. ubuntu下使用docker进行深度学习环境配置(从入门到精通)
  18. window系统杀死进程方法
  19. java qq邮箱服务器端口_spring mail借助qq邮箱服务器发送邮件
  20. python 网页爬虫抓取 自动化测试之phantomjs使用详解

热门文章

  1. [转载] 将一个整数型字符串转换为一个整数
  2. as_hash ruby_Hash.merge(other_hash)方法与Ruby中的示例
  3. linux上mysql分区磁盘位置_Linux下Oracle软件、数据文件等所在的磁盘分区空间不足的解决思路...
  4. 原生js设置div隐藏或者显示_JavaScript动画方式控制div元素的隐藏和显示
  5. linux家用系统版本,查看linux系统版本
  6. r软件说明lib文件未指明_软件说明文件
  7. 不错!SpringBoot发布Jar包优化瘦身指南!
  8. C# Winform 窗体美化(七、Win7 Aero 毛玻璃效果)
  9. 算法设计与分析复习第一二章(时间复杂度和蛮力法)
  10. KubeFlow安装指南