EF中的DBFirst实例(下)
来源:互联网 发布:苹果手机排版软件 编辑:程序博客网 时间:2024/05/16 06:31
上一篇博文新建了一个项目以及数据模型文件,本次就接着上次的讲解继续往下深入,学习一下如何使用Linq进行一个基本的增删改查。
一、新建Web页面
新建一个Web页面Action.aspx,在该页面中添加一些文本框以及按钮,具体操作步骤不再讲述,效果如下所示:
二、添加后台操作
1.查询
(1)后台代码
protected void btnSelect_Click(object sender, EventArgs e) //查询 { string information = ""; var result = from c in dbcontext.Student1 select c;//简单的无where的查询 foreach (var item in result) information = "姓名:" + item.Sname + "\n" + "学号:" + item.Sno + "\n" + "性别:" + item.Ssex + "\n"; Label1.Text = information; // var result1 = from c in dbcontext.Student1 where c.Sno = "110" select c; // var result1 = from c in dbcontext.Student1 where c.Sno = TextBox1.Text select c; }
(2)查询所有记录效果图
(3)LINQPad工具效果查看
使用LINQPad工具可以查看Linq查询语言对应的具体的数据库SQL脚本语言以及Lamada表达式(LINQPad工具对于学习Linq语言非常好用,具体使用方式可以查看我的另一篇博文)。
2.添加
(1)后台代码
protected void btnAdd_Click(object sender, EventArgs e) //添加 { Student1 str = new Student1(); //新建实例 str.Sno = Txtno.Text; //为该实例的各个属性赋值 str.Sname = Txtname.Text; str.Ssex = Convert.ToInt16(Txtsex.Text); str.Sphone = Txtphone.Text; str.Saddress = Txtaddress.Text; dbcontext.Student1.AddObject(str); //添加到对象上下文中 dbcontext.SaveChanges(); //保存修改 //dbcontext.Student1.Attach(str); //dbcontext.ObjectStateManager.ChangeObjectState(str,EntityState.Added); //dbcontext.SaveChanges(); }
(2)效果图
3.修改
(1)后台代码
protected void btnUpdate_Click(object sender, EventArgs e) //修改方法1 { Student1 str = new Student1();//首先创建一个实体类 str.Sno = Txtno.Text; str.Sname = Txtname.Text; str.Ssex = Convert.ToInt16(Txtsex.Text); str.Sphone = Txtphone.Text; str.Saddress = Txtaddress.Text; <span style="color:#ff0000;">dbcontext.Student1.Attach(str); //将该实体类附加到对象上下文中</span> dbcontext.ObjectStateManager.ChangeObjectState(str, EntityState.Modified);//修改对应实体的的状态 dbcontext.SaveChanges(); //保存修改
<span style="font-family: Arial, Helvetica, sans-serif;"> }</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="html"> protected void btnUpdate_Click(object sender, EventArgs e) //修改方法2 { Student1 str = new Student1();//首先创建一个实体类 str = (from c in dbcontext.Student1 where c.Sno == Txtno.Text select c).SingleOrDefault<Student1>(); str.Sno = Txtno.Text; str.Sname = Txtname.Text; str.Ssex = Convert.ToInt16(Txtsex.Text); str.Sphone = Txtphone.Text; str.Saddress = Txtaddress.Text; <span style="color:#ff0000;"> //dbcontext.Student1.Attach(str); //将该实体类附加到对象上下文中</span> dbcontext.ObjectStateManager.ChangeObjectState(str, EntityState.Modified);//修改对应实体的的状态 dbcontext.SaveChanges(); //保存修改 }
(2)效果图
4.删除
(1)后台代码
protected void btnDelete_Click(object sender, EventArgs e) //删除 { //var result=from c in dbcontext.Student1 ; Student1 st1 = new Student1();//首先创建一个实体类 st1.Sno = Txtno.Text; <span style="color:#ff0000;">dbcontext.Student1.Attach(st1); //将该实体类附加到对象上下文中</span> dbcontext.ObjectStateManager.ChangeObjectState(st1, EntityState.Deleted);//修改对应实体的的状态 dbcontext.SaveChanges(); //保存修改 }
protected void btnDelete_Click(object sender, EventArgs e) //删除 { Student1 st1 = (from c in dbcontext.Student1 where c.Sno == Txtno.Text select c).SingleOrDefault<Student1>(); dbcontext.ObjectStateManager.ChangeObjectState(st1, EntityState.Deleted);//修改对应实体的的状态 dbcontext.SaveChanges(); }
(2)效果图
三、总结
1.本次使用Linq(集成语言查询)进行了基本的数据增删改查,Linq查询语言与Sql不同,具体两者之间的转换可以借助于LINQPad工具实现。
2.使用Linq进行数据的增删改大致可分为以下几个步骤:
(1)新建一个实体类对象
(2)设置该对象的各个属性
(3)把该对象添加到对象上下文中
(4)修改上下文状态
(5)保存修改
3.修改、删除时两种操作方法
(1)新建一个实体类对象
(2)从数据查询得到一个对象(此时不再需要把该对象附加到对象上下文中,因为它已经存在了)
4.修改、删除时两种操作方法性能分析
初学EF以及Linq,这方面还不太了解,以后再完善
四、易犯错误
(1)忘记写SaveChanges();导致执行失败。SaveChanges()的作用就是生成并执行数据库脚本,最终实现数据的操作成功。
(2)选用第二种方式实现修改、删除操作时,再次把对象添加到对象上下文中
Linq语句不容易编写,想要编写正确的Linq语句可以借助LINQPad工具
源代码:EFDBFirst设计实例
0 0
- EF中的DBFirst实例(下)
- EF中的DBFirst实例(上)
- EF下CodeFirst、DBFirst与ModelFirst分析
- EF下 CodeFirst、DBFirst与ModelFirst分析
- EF Core DBFirst
- EF之DBFirst数据库先行
- 【EF系列】DBFirst数据库优先
- 深入浅出EF之ModelFirst和DBFirst
- 【EF】DbFirst实现增删改查
- EF的DBFirst方式访问SQLite
- .net MVC EF DBFirst 增删改查
- 一步步学习EF Core(1.DBFirst)
- EF中的ModelFirst设计实例
- 将EF项目从dbfirst转化为codefirst
- 《MVC+EF》——用DBFirst创建ADO.NET实体数据模型和对象关系映射
- ef DBfirst,修改代码生成文件,实现数据实体的继承
- MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例
- 【EF 1】EF实体框架 原理+实例
- linux下C获取文件的大小 .
- 用正则表达式得到Java中所有的关键字
- 新手守则——Android手机通过USB连接电脑无法连接到Eclipse的情况
- mysql使用fulltext索引
- could not build module darwin
- EF中的DBFirst实例(下)
- css3模仿新浪微博主页文字滚动
- 图解SQL的各种连接join
- Ext.关于textfield的键盘事件的监听
- 几种在场景之间传递数据的方式
- Mongoose学习参考文档
- 内存池的小结
- C语言注释方法
- 基于android样式与主题(style&theme)的详解