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
原创粉丝点击