EF入门

    一,对比Linq to SQL

             最近学了两个具有ORM思想的东西,一个是Linq to SQL ,另一个是EF。。。

 

         

          

           

           

         学完之后总是从使用上感觉它们是一样的,后来自己查了查,统计了个表格:

                  

           

     

                各有优劣吧~~欢迎前来补充~~~~

     二,EF实现简单增删改查

              

  static void Main(string[] args)
        {

            #region 增加单个实体
                using (var dbContext = new SecondChargeEntities())//先创建访问数据库的入口
                {
                    var mystudent = new T_StuInfo
                    {

                        StuNum = "01",
                        StuCardNum = "01",
                        StuName = "杰伦哥哥"

                    };  //定义一个要增加的对象

                    dbContext.T_StuInfo.Add(mystudent);//增加
                    int result = dbContext.SaveChanges();//真正写入数据库
                    Console.WriteLine(result);  //打印出1

                }
            #endregion

            #region 查询单个实体

                using (var dbContext = new SecondChargeEntities())//先创建访问数据库的入口
                {
                    var mystudent = dbContext.T_StuInfo.Find("01");//使用主键查找上下文跟踪的实体

                    Console.WriteLine(mystudent.StuName);  //打印出学生姓名:杰伦哥哥

                } 

            #endregion

            #region 修改单个实体

                    using (var dbContext = new SecondChargeEntities())//先创建访问数据库的入口
                    {
                        var mystudent = (from stu in dbContext.T_StuInfo where stu.StuName == "周杰伦" select stu).Single();
                        mystudent.StuName = "亲耐滴杰伦哥哥";
                        int result=dbContext.SaveChanges();
                        Console.WriteLine(result);  //返回1

                    } 

            #endregion

            #region  删除单个实体——使用Remorve方法

                using (var dbContext = new SecondChargeEntities())//先创建访问数据库的入口
                {
                    var mystudent = (from stu in dbContext.T_StuInfo where stu.StuName == "令狐冲" select stu).SingleOrDefault();

                    dbContext.T_StuInfo.Remove(mystudent);  //将实体标记为deleted
                    int result = dbContext.SaveChanges(); //将更改保存到数据库
                    Console.WriteLine(result);  //返回1

                } 

            #endregion

            //--------删除方法这样写可能有点儿效率问题:
            //要删除一个实体,只要知道它的id就ok了,但是上面
            //的方法却要先加载这个实体到内存,这是个多余的步骤,下面我们使用attach方法

            #region 删除单个实体——attach方法

                using (var dbContext = new SecondChargeEntities())//先创建访问数据库的入口
                {
                    var mystudent =new  T_StuInfo
                    {
                        StuNum ="01"
                    };

                    dbContext.T_StuInfo.Attach(mystudent);//将实体以unchanged状态附加到上下文中

                    dbContext.T_StuInfo.Remove(mystudent );  //将实体标记为deleted
                   int result= dbContext.SaveChanges();  //提交到时数据库

                    Console.WriteLine(result );  //打印出1

                } 

            #endregion

            #region 删除单个实体ExecuteSQLCommand方法
                using (var dbcontext=new SecondChargeEntities())
                {
                    dbcontext.Database.ExecuteSqlCommand("delete from T_StuInfo where StuNum='3'");
                }

            #endregion

        }

            如上DEMO,我们还是主要使用DBContext这个类的变种来实现对数据库的操作,这个东西从功能上有点儿像SQLHelper,但是从原理上看,它们还是不一样滴。

           这个上下文类利用底层的ADO.NET生成SQL代码实现对数据库的增删改查,相比以前的SQL语句,这种方法更易于写和调试,而且非常简单;并且在EF中,也可以使用linq的语句简化查询。

       

 

时间: 2025-01-13 14:09:04

EF入门的相关文章

什么是docker Docker入门教程第一篇_docker

Docker是个新生的事物,概念类似虚拟化.网上关于Docker入门的东西已经很多了.不过本文探讨了Docker的特点.特性.原理,还介绍了具有中国特色的安装测试过程,另外还谈到了Docker的社区生态和Dockerfile,并使用Dockerfile构建一个nginx环境. 缘起 在几个月前听说Docker,但是一直没有时间去研究,前一段时间趁着azure免费试用,赶紧实验一下,但是卡在了ubuntu基础镜像的下载上(由于国内网络的特殊原因),所以也就搁浅了,这里把经验和体会分享一下. Doc

机器学习初学者入门实践:怎样轻松创造高精度分类网络

这是一个为没有人工智能背景的程序员提供的机器学习上手指南.使用神经网络不需要博士学位,你也不需要成为实现人工智能下一个突破的人,你只需要使用现有的技术就行了--毕竟我们现在已经实现的东西已经很突破了,而且还非常有用.我认为我们越来越多的人将会和机器学习打交道就像我们之前越来越多地使用开源技术一样--而不再仅仅将其看作是一个研究主题.在这份指南中,我们的目标是编写一个可以进行高准确度预测的程序--仅使用图像本身来分辨 data/untrained-samples 中程序未见过的样本图像中是海豚还是

Auto Layout 入门及使用

引言:           Auto Layout是iOS6发布后引入的一个全新的布局特性,其目的是弥补以往autoresizing在布局方面的不足之处,以及未来应对更多尺寸适配界面时布局可以更好的展示.要完全掌握Auto Layout(以下简称AL)不是一件容易的事情,实践是学习和掌握的根本,并且在根本上面,理解其如何使用,本篇做为AL的入门介绍和功能使用 参考资料: 1:iOS7.0 Xcode5 Auto Layout 备忘录 http://www.cnblogs.com/thefeeli

MVC5 + EF6 入门完整教程二

原文:MVC5 + EF6 入门完整教程二 从前端的UI开始 MVC分离的比较好,开发顺序没有特别要求,先开发哪一部分都可以,这次我们主要讲解前端UI的部分. ASP.NET MVC抛弃了WebForm的一些特有的习惯,例如服务器端控件,ViewState这些东西,让Web回归原始的状态,Web是什么样子就是什么样子.而谈到一个Web Application的UI,涉及到的无非就是html.css. js这些东西. 文章提纲 概述 重要概念介绍 建立 注册/登录UI 步骤(静态页面àViewà功

ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列之开篇 前言:博客又有一段时间没有更新了,心里感觉这段时间空空的,好像什么都没有学下,所以就想写博客,所以就有了这个系列,这里当然也要感谢大家了,因这个项目我已经上传了,得到了很多网友的评价,也有好多人发邮件给我说这个框架容易出现问题,不能访问,这也是支持我写这个系列的动力,我将这个项目写成一个系列,可能要很长时间吧,但是我肯定会一直坚持,如果我哪里写的不好欢迎大家指出我们共同学习,而且我理解的也不是很透彻,所以我想在写这样一遍

[Silverlight入门系列]使用MVVM模式(9): 想在ViewModel中控制Storyboard动画?

原文 http://www.cnblogs.com/Mainz/archive/2011/08/25/2153828.html 在前面的Silverlight入门系列文章中穿插讲了一些MVVM模式系列文章,MVVM模式貌似简单,其实要把界面逻辑抽象出来还是很不容易,像<TreeView真正实现MVVM模式和Expanded发生时异步动态加载子节点(WCFRiaService)>就不是这么简单,有的童鞋像feiyang还要实现Treeview的展开状态持久化和自动恢复,配合MVVM实现不容易.所

MVC5+EF6 入门完整教程五

原文:MVC5+EF6 入门完整教程五 上篇文章介绍了EF实现CRUD及一些基本的Html Helpers. 这次我们将会对之前的内容进行一些修改和重构: 引入Bootstrap样式,搭建几类共用的模板页,对UI进行一些改造 分类介绍Html Helpers 完善一些功能 文章提纲 理论基础 UI改造详细步骤 总结 理论基础 -- Bootstrap简介 以下摘自百度百科: Bootstrap是Twitter推出的一个开源的用于前端开发的工具包.它由Twitter的设计师Mark Otto和Ja

有关EF操作数据库的问题

问题描述 本人使用where()获取数据,进行修改,最后savechange()运行没有报错,但是数据的数据并没有修改,还是老样,有什么因素造成呢 解决方案 解决方案二:有没有调试过?或者贴出savechange()的代码解决方案三:调试了,也有savechange()了.数据库就是没有变化解决方案四:建议那个例子去试验下EF的使用.具体入门例子参考:解决方案五:代码执行成功不能作为数据改变的充分条件数据改没改变要看执行代码后有没有受影响解决方案六:前面有几个功能的编辑都修改成功,遇到这个就不行

ASP.NET MVC 入门介绍 (上)

参考文章 ASP.NET MVC Overview. 1. MVC模式 MVC模式是一种软件架构模式.它把软件系统分为三个部分:模型(Model),视图(View)和控制器(Controller).MVC模式最早由Trygve Reenskaug在1974年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式.MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能.除此之外,