EF中的DBFirst实例(下)

上一篇博文新建了一个项目以及数据模型文件,本次就接着上次的讲解继续往下深入,学习一下如何使用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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值