Linq无聊练习系列7----Insert,delete,update,attach操作练习
/*********************Insert,delete,update,attach操作练习**********************************/
//简单插入形式
var student = new T_Student
{
stuNumber = "20091777",
stuName = "张航",
stuAge = 23,
stuSex = "男"
};
ctx.T_Student.InsertOnSubmit(student);
ctx.SubmitChanges();
//一对多形式,或者多对多形式,需要按照主外健关系依次插入
var student1 = new T_Student
{
stuNumber = "2009177",
stuName = "谢亮",
stuAge = 23,
stuSex = "男"
};
var score1 = new T_Score
{
stuNumber = student1.stuNumber,
courceNumber = "001",
score = 78
};
var score2 = new T_Score
{
stuNumber = student1.stuNumber,
courceNumber = "002",
score = 78
};
ctx.T_Student.InsertOnSubmit(student1);
ctx.T_Score.InsertOnSubmit(score1);
ctx.T_Score.InsertOnSubmit(score2);
ctx.SubmitChanges();
//更爱张航的年龄为21,这种涉及到单项或者更改项很少的,可以用下面的方式更改
var list = ctx.T_Student.First(s=>s.stuName=="张航");
list.stuAge = 21;
ctx.T_Student.InsertOnSubmit(list);
ctx.SubmitChanges();
//让学生表中各个学生的年龄加一岁
var list1 = from t in ctx.T_Student
select t;
foreach (var item in list1)
{
item.stuAge = item.stuAge + 1;
}
ctx.T_Student.InsertAllOnSubmit(list1);
ctx.SubmitChanges();
//删除学号为2091721,课程编号为002的学生
var list2 = ctx.T_Score.First(s => s.stuNumber == "2091721"&&s.courceNumber=="002");
ctx.T_Score.DeleteOnSubmit(list2);
ctx.SubmitChanges();
//删除学号为黄阳的个人信息及分数信息
var list3 = ctx.T_Student.First(s=>s.stuName=="黄阳");
var list4 = from a in ctx.T_Score
where a.T_Student.stuName == "黄阳"
select a;
foreach (var item in list4)
{
ctx.T_Score.DeleteOnSubmit(item);
}
ctx.T_Student.DeleteOnSubmit(list3);
ctx.SubmitChanges();
//还可以推理删除,推理删除需要用Remove方法。由于表的设计不是很完善,这里就不给演示了
//对于在不同的上下文间,需要使用attach方法进行更新,如在一个上下文中查出一个叫黄阳的学生和它的各科成绩,在另一个上下文中将其年龄改为19,将其所有学科科目成绩改为33分
T_Student student2;
List<T_Score> listScore = new List<T_Score>();
using (DB_StudentDataContext ctx1 = new DB_StudentDataContext())
{
var stu = ctx1.T_Student.First(s=>s.stuName=="黄阳");
student2 = new T_Student {
stuNumber=stu.stuNumber,
stuName=stu.stuName,
stuAge=stu.stuAge,
stuSex=stu.stuSex
};
var scores = from k in ctx1.T_Score
where k.T_Student.stuName == "黄阳"
select k;
foreach (var item in scores)
{
listScore.Add(item);
}
}
ctx.T_Student.Attach(student2);
student.stuSex = "19";
ctx.T_Score.AttachAll(listScore);
foreach (var item in listScore)
{
item.score = 33;
}
ctx.SubmitChanges();
//使用attach进行删除,更改,插入
T_Student student3 = null;
using (DB_StudentDataContext ctx2 = new DB_StudentDataContext())
{
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<T_Student>(s => s.T_Score);
ctx2.DeferredLoadingEnabled = false;
student3 = ctx2.T_Student.First(s=>s.stuName=="黄阳");
}
T_Score scores1 = student3.T_Score.First();
T_Score scores2 = student3.T_Score.First(s => Convert.ToInt32(s.stuNumber) > Convert.ToInt32(scores1.stuNumber));
using (DB_StudentDataContext ctx3 = new DB_StudentDataContext())
{
ctx3.T_Student.Attach(student3);
ctx3.T_Score.AttachAll(student3.T_Score.ToList());
scores1.score = 80;
student3.T_Score.Remove(scores2);
T_Score score3 = new T_Score {
stuNumber = "2009177",
courceNumber = "003",
score=88
};
student3.T_Score.Add(score3);
ctx3.SubmitChanges();
转载于:https://www.cnblogs.com/selfimprove/p/3612732.html
Linq无聊练习系列7----Insert,delete,update,attach操作练习相关推荐
- 触发器实现两表之间的INSERT,DELETE,UPDATE
需求说明:培训记录处录入"外出培训"记录,保存后同步外出培训合同至"合同模块" 培训记录表PX_Record创建触发器 步骤一.新建触发器:[insert_ht ...
- MySQL5.7 支持一个表有多个INSERT/DELETE/UPDATE触发器
在MySQL5.6版本里,不支持一个表有多个INSERT/DELETE/UPDATE触发器. 例如创建t1表两个INSERT的触发器: DELIMITER $$ USE `test`$$ DROP T ...
- mysql 5.7 insert_MySQL5.7 支持一个表有多个INSERT/DELETE/UPDATE触发器
在MySQL5.6版本里,不支持一个表有多个INSERT/DELETE/UPDATE触发器. 例如创建t1表两个INSERT的触发器:DELIMITER $$ USE `test`$$ DROP TR ...
- MySQL 数据库常用命令—insert delete update select
引言 MySQL 数据库和其它的数据库一样,也支持增(insert)删(delete)改(update)查(select)操作. insert 基本语法规则 insert into table_nam ...
- SQLite Tutorial 3 : Working with important SqLite Queries (SELECT, INSERT, DELETE, UPDATE,WHERE...)
1.SELECT a.选择所有数据 b.选择某列 c.选择多列 d.选择某行某列 其他WHERE语句 WHERE age between 32 and 38 WHERE gender='Male' e ...
- JDBC PrepareStatement insert delete update DML
文章目录 class PrepareStatementInsert PrepareStatementUpdate PrepareStatementDelete class PrepareStateme ...
- JDBC insert delete update(DML)
文章目录 思路感悟 原始数据1 class JDBCInsert 插入数据之后 原始数据2 JDBCDelete 删除数据之后 原始数据 class JDBCUpdate 更新数据之后 思路感悟 原始 ...
- 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete
2019独角兽企业重金招聘Python工程师标准>>> 上篇文章<深入浅出Mybatis系列(六)---objectFactory.plugins.mappers简介与配置&g ...
- MongoDB入门系列(二):Insert、Update、Delete、Drop
概述 本章节介绍Insert.Update.Delete.Drop操作基本语法. 环境: Version:3.4 insert insert()基本语法如下: db.collection.insert ...
最新文章
- Linux下载安装配置FTP
- 在CentOS7上配置Open vSwitch和VXLAN
- PHP ORM框架ezpdo(2)之EZPDOSQL
- BZOJ1021 [SHOI2008]循环的债务
- 分享一些书籍,方方面面,很多值得一读
- rman report 命令
- 批量提取 caffe 特征 (python, C++, Matlab)(待续)
- div中文字,图片居中对齐,兼容FF、IE
- BGP/MPLS *** Option B 跨域研究实验
- __RESTRICT修改为__RRSTRICT,程序闪退。
- 【kafka】Kafka 幂等 Producer
- python给用户打标签_用Python实现RFM模型——互联网产品用户分层必备技巧
- JSF之经常使用注解
- AOP处理事务静、动态代理(jdk方法)
- sitemap.xml 静态和动态生成页面 shopnc二次开发 动态生成sitemap.xml
- 如何对接快递助手物流查询接口【干货】
- 作战管理系统:现代化作战体系核心
- 谷歌邮箱无法显示使用 Base64 处理的图片的解决方法
- 源自神话的写作要义之英雄之旅
- 自动化部署流程_自动化会议提交工作流程:部署到生产
热门文章
- document.createElement()的用法
- hdu 4421(枚举+2-sat)
- python---之hasattr()
- 数据结构上机实践第四周项目6- 循环双链表应用
- ios 格式化html字符串,ios – 粘贴格式化文本,不是图像或HTML
- php脚本日志文件,php脚本-定期删除日志文件,删除历史日志 保留最近7天
- BCrypt加密怎么存入数据库_松哥手把手带你入门 Spring Security,别再问密码怎么解密了...
- linux什么命令查设备型号,在Linux命令行中查看系统硬件制造商、型号与序列号的六种方法...
- 查看kafka的主从状态_Kafka 集群部署
- android曲线水波纹录音动画,Android-贝塞尔曲线实现水波纹动画