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();
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();
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();