Entity Framework 基础

  在忙碌中渡过了5,6,7 月份,现在些抽点时间对Entity Framework的使用做一些基础的回忆。

Entity Framework 是什么?

  Entity Framework(EF)和我们所熟悉的ADO.NET差不多,都提供对数据库访问和操作的对象,不过各自也有所不同之处。

  ADO.NET提供了一套对底层数据库操作的对象模型,抽象层次较底,操作效率和性能较高,是日常开发中访问数据库常用方式。

  EF的抽象层次较高:它把数据库映射为DbContext,把数据库对象都转换成应用程序对象 (entity),而数据字段都转换为属性 (property),关系则转换为结合属性 (association)。在系统开发上提升了不少效率,使用EF能很容易提升易维护,易扩展的系统。

  EF 同时也支持 Linq , Lambda 编写查询等相关数据库操作,不需要懂SQL语法也能熟练操作数据库。

  因为EF把数据库对象都转换成实体对象存储在内存中,所以EF在使用过程中是比较占内存。加上抽象层次较高在访问底层数据库模型需做转换,在数据库操作性能上一般没ADO.NET高。这是在享用EF的弊端。

  EF在项目中主要是一个:*.edmx文件。EF 主要分为三层:

  (1)概念模型(Conceptual Model):主要体现为一组可以被应用程序直接使用的类。这些类也是我们在程序中直接使用的类,通常称之为“实体(Entity)”

  (2)存储模型(Storage Model):主要体现为一组与底层数据存储介质(比如数据库系统)直接对应的类。

  (3)概念-存储模型映射(Conceptual- Storage Mapping),解决“概念模型”中的类如何与“存储模型”中的类相互对应的问题。

Entity Framework 创建

1.在VS2012创建EF文件,并选择Database First开发模式。

2.配置EF所需连接的数据库。

3.配置完成后我们可以看到EF的真面目。左边展示为:数据库对应表的映射内容。 

4.在左边空白处右键-->"映射详细信息"可以查询数据库映射表的详细内容可做相应修改, “模型浏览器”可以查询到EF的三层结构:概念模型,概念-存储模型映射,存储模型。

 

Entity Framework 使用CRUD

1. 增加数据

WebSiteDBEntities entity = new WebSiteDBEntities();

Users user
= new Users() { Account = "9245162", Code = "10003", Pwd = "123456", Isadmin = true }; entity.Users.Add(user); entity.SaveChanges();

执行结果:

2.查询数据

//Linq 查询
var Query_User_TO_Linq = from c in entity.Users where c.Account == "9245162" select c;
foreach (var Users in Query_User_TO_Linq)
    Console.WriteLine("Linq 查询结果:帐号:{0},编码:{1}", user.Account, user.Code);

//Lambda 查询
var Query_User_TO_Lambda = entity.Users.Where(c => c.Account == "9245162").ToList();
foreach (var Users in Query_User_TO_Lambda)
    Console.WriteLine("Lambda 查询结果:帐号:{0},编码:{1}", user.Account, user.Code);

//SQL 查询 var Query_User_TO_SQL = entity.Users.SqlQuery("Select * from Users Where Account='9245162' ").ToList(); foreach (var Users in Query_User_TO_SQL) Console.WriteLine("SQL 查询:帐号:{0},编码:{1}", user.Account, user.Code);

执行结果:

3.修改数据

Users uuser = entity.Users.First(c => c.Code == "10003");
uuser.Account = "CK9245162";
entity.Users.Attach(user);
entity.Entry(uuser).State = System.Data.EntityState.Modified;
entity.SaveChanges();

4.删除数据

Users duser = entity.Users.First(c => c.Account == "9245162");
entity.Users.Remove(duser);
entity.SaveChanges();

 

Entity Framework  三种开发模式

DataBase First: 传统的表驱动方式创建edm,然后通过edm生成模型和数据层代码。
Model First : 先创建edm模型,再生成DDL数据库脚本和模型和数据层代码。
Code First : 手动创建POCO模型,数据层DbContext及映射关系,通过Database.SetInitializer生成数据库,这种方式较灵活,但是代码工作较多。

 

posted @ 2015-07-12 16:28  每日一bo  阅读(525)  评论(1编辑  收藏  举报