zoukankan      html  css  js  c++  java
  • EF

                                                EF

          EF是实体框架,英文就是Entity Framework。它是ORM的思想的一种产物。表和表实体的映射。

          那么EF比原生的Ado.net有哪些优势呢,小结如下:

          1.它是微软自己的产品,跟VS集成度肯定是很好的。能极大的提高开发人员的效率,可能我们用ado.net写三天的代码,而用EF半天就可以了。开发的代码中都是强类型的。写代码的效率非常高,比如说分页,用linq写,skip一下,take一下也就可以了。

          2.EF提供的模型设计器非常强大,可以做到Model先行,是带来了数据库的一个革命。

          3.EF能做到的是仅仅改变配置就可以切换数据库。

          另外,它有一个缺陷就是性能相对差,在生成SQL脚本阶段,在复杂的时候生成的SQL脚本效率不是很高。

         以下附一个用EF的增删改的代码。

         大概也就五步,第一步就是创建一个EF实体模型,你选择数据库先行(DBFirst),或者模型先行(ModelFirst)。第二步就是创建一个数据库的上下文,由它来操作,其上知天文,下知地理。其在EF4.0的时候对象是objectContext,现在的是dbContext,其本质也是对objectContext进行了一个封装。第三步就是创建实体,如果是增加就把增加的值要写上,如果是删除就一定要写上删除的数据的id,不然就会不知道删除哪条数据的,如果是修改就写上修改后的一些数据。第四步,也就是告诉数据库要做一个什么样子的操作,是添加,修改还是删除,这是一个枚举,如下的增加的也就是第10行的代码也可以写成db.Entry(info).State = EntityState.Add;第五步,也就是告诉数据库将实体映射到数据库中,也就是调用一下上下文的一个SaveChanges()方法。

     1 //思路五步:先创建一个EF实体模型,
     2                         //再创建一个访问数据库的上下文,
     3                         //做添加操作,
     4                         //把其添加到数据库中去,
     5                          //保存一下。
     6             //DPSLEntities db=new DPSLEntities();//这是第二步。创建数据库上下文对象。
     7             //Info info=new Info();  //第三步,创建实体。为之赋值。
     8             //info.name = "dpsl";
     9             //info.sex = "男";
    10             //db.Info.Add(info);    //第四步,告诉数据库我要做一个添加的操作。
    11             //db.SaveChanges();     //第五步,告诉ORM给我映射到数据库中去。
    12             //Console.WriteLine("搞定!成功将实体添加到数据库中!!");
    13             //Console.ReadKey();
    用EF增加的代码
    1  //DPSLEntities db = new DPSLEntities();              //创建数据库上下文
    2             //Info info = new Info();                                      //创建实体,为id赋值,好让知道删除哪个。
    3             //info.id = 2;
    4             //db.Info.Attach(info);                                         //将实体附加到上下文中进行管理。
    5             //db.Entry(info).State=EntityState.Deleted;         //注意写法,后面的为枚举。
    6             //db.SaveChanges();                                             //给我映射到数据库里去。
    7             //Console.WriteLine("成功将实体从数据库中删除");
    8             //Console.ReadKey();
    用EF删除的代码
    1   DPSLEntities db = new DPSLEntities();
    2             Info info = new Info();
    3             info.id = 1;
    4             info.name = "修改后的dpsl";
    5             info.sex = "";
    6             db.Entry(info).State = EntityState.Modified;
    7             db.SaveChanges();
    8             Console.WriteLine("成功修改了数据!!");
    9             Console.ReadKey();
    用EF修改的代码
  • 相关阅读:
    Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作
    基于visual Studio2013解决算法导论之002归并排序
    基于visual Studio2013解决算法导论之001插入排序
    android用户界面之ScrollView教程实例汇总
    android ScrollView--Linearlayout可以上下拖动
    在 Windows Azure 网站上使用 Django、Python 和 MySQL:创建博客应用程序
    Windows Azure 网站 (WAWS) 和中间证书
    Windows Azure 社区新闻综述(#78 版)
    通过 HTTPS 和 SSL 确保 Windows Azure 网站 (WAWS) 安全
    盘点:#AzureChat
  • 原文地址:https://www.cnblogs.com/anmutu/p/EF.html
Copyright © 2011-2022 走看看