vs2010 mysql linq to sql 系列_LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据...
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插入、修改、删除数据...相关推荐
- mysql将查到的数据删除_MySQL基本SQL语句之数据插入、删除数据和更新数据 | 旺旺知识库...
一.INSERT插入数据: 方法一:批量插入 基本语法: INSERT INTO tb_name (col1, col2, ...) VALUES (val1, val2, ...)[,(val1, ...
- Mysql 数据插入 修改删除
MYSQL基础上机练习题(二) 数据插入.修改.删除 一.实验目的: 数据插入.修改.删除 数据表的复制 字段分列 二.实验内容: 对实验一所展示的表进行数据输入.修改.删除 以下为Employee ...
- c 更新mysql数据_MySQL插入更新删除数据
数据插入 插入完整的行 INSERT INTO customers VALUES(NULL, 'Pep E. LaPew', '100 Main Street', 'Los Angeles', 'CA ...
- mysql入门到跑路_MySQL 24小时入门笔记(3),插入和删除,删库到跑路
MySQL 24小时入门笔记 插入 INSERT INSERT用法非常简单.现在我们有表students如下. 列名 类型 约束 id int primary key name char(16) NO ...
- 05_通过sql操作表中的数据_插入修改删除查询
123131 转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/7014978.html
- eclipse给mysql修改表数据_Eclipse中java向数据库中添加数据,更新数据,删除数据...
ASP.NET网页动态添加.更新或删除数据行 看过此篇 http://www.cnblogs.com/insus/p/3247935.html的网友,也许明白Insus.NET是怎样实现动态添加数据行 ...
- MySQL删除数据表(DORP TABLE语句)
在 MySQL 数据库中,对于不再需要的数据表,我们可以将其从数据库中删除.下面我们来了解一下 MySQL 数据库中数据表的删除方法. 基本语法 当需要删除一个表的时候,可以使用 DROP TABLE ...
- 05-JDBC连接MySQL数据库【删除数据】
JDBC自学教程–终篇总结: 地址:http://blog.csdn.net/baidu_37107022/article/details/72600018 1.实现修改步骤 前三个步骤:注册.获得连 ...
- SQL工具性能实测:居然比Navicat还快,数百万行数据导出仅51秒
如今的SQL语言逐渐成为职场人士必备的能力.为了让更多SQL用户有一款免费又好用的SQL工具,麦聪软件于2023年1月初发布了一款Web版SQL工具SQL Studio,一经推广就赢得了众多用户的注册 ...
- mysql删除数据后释放磁盘空间
drop table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM : truncate table table_name立刻释放磁盘空间 ,不管是 Innodb和My ...
最新文章
- 作为程序员,我是怎么通过一个方法记住7000个单词的!
- ORA-03135 ,ORA-02050到底什么原因?
- mysql session变量_mysql 系统变量和session变量
- java结果集分页太慢_巨大结果集的分页错误
- 对于一颗具有n个结点,度为4的树来说,( )
- 「权威发布」2019年大学生电子设计竞赛获奖名单
- 表面配准论文1--基于高阶图匹配方法的稠密表面配准
- 三级菜单 python_python三级菜单
- 终于!华为在欧盟注册新商标“Harmony”;亚马逊AWS宣布张文翊“新官上任”;甲骨文失去竞购100亿美元国防部云计算合同资格...
- Java类加载器 以及类加载器的委托模型
- 【星云测试】开发者测试(2)-采用精准测试工具对J2EE Guns开发框架进行测试
- 常用文件格式转换大全: PDF转Word,WORD转PDF转换器,DOCX转DOC转换
- 交换机/路由器实验:保姆级别的iperf安装和使用教程
- Apache Flume 1.7深入浅出,快速入门
- ES6(ECMAScript6)知识总结(二)
- [篇二章四]_安装 Windows 11 系统
- ubuntu下使用docker进行深度学习环境配置(从入门到精通)
- window系统杀死进程方法
- java qq邮箱服务器端口_spring mail借助qq邮箱服务器发送邮件
- python 网页爬虫抓取 自动化测试之phantomjs使用详解
热门文章
- [转载] 将一个整数型字符串转换为一个整数
- as_hash ruby_Hash.merge(other_hash)方法与Ruby中的示例
- linux上mysql分区磁盘位置_Linux下Oracle软件、数据文件等所在的磁盘分区空间不足的解决思路...
- 原生js设置div隐藏或者显示_JavaScript动画方式控制div元素的隐藏和显示
- linux家用系统版本,查看linux系统版本
- r软件说明lib文件未指明_软件说明文件
- 不错!SpringBoot发布Jar包优化瘦身指南!
- C# Winform 窗体美化(七、Win7 Aero 毛玻璃效果)
- 算法设计与分析复习第一二章(时间复杂度和蛮力法)
- KubeFlow安装指南