在忙碌中渡过了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 = "",
Code = "",
Pwd = "",
Isadmin = true
};
entity.Users.Add(user);
entity.SaveChanges();

执行结果:

2.查询数据

//Linq 查询
var Query_User_TO_Linq = from c in entity.Users where c.Account == "" 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 == "").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 == "");
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 == "");
entity.Users.Remove(duser);
entity.SaveChanges();

Entity Framework  三种开发模式

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

Entity Framework 基础的更多相关文章

  1. ADO.NET 之 Entity Framework 基础

    Entity Framework(EF)是使用直接映射到应用程序中业务对象的对象模型于关系数据库进行交互.它没有将数据视为行和列的集合,而是将其视为强类型对象(成为实体)的集合. 术语:LinQ to ...

  2. Entity Framework基础01

    学习了ADO.NET的相关知识,掌握了它对数据库表的基本操作,但是实际在开发项目应用中微软为我们开发ef这个ORM,使用它可以很方便的利用ADO.NET来操作DBMS,使得我们开发项目的着重点放在业务 ...

  3. Entity Framework 基础操作(1)

    EF是微软推出的官方ORM框架,默认防注入可以配合LINQ一起使用,更方便开发人员. 首先通过SQLSERVER现在有的数据库类生产EF 右键->添加->新建项,选择AOD.NET实体数据 ...

  4. Entity Framework 基础知识走马观花

    本文目录: 一.EF中的edmx文件探秘 二.EF中的代理模式探秘 三.EF中的延迟加载与即时加载 一.EF中的edmx文件 1.1 emdx文件本质:一个XML文件 (1)通过选择以XML方式打开e ...

  5. Entity Framework基础

    http://blog.csdn.net/hurtlingsnail/article/details/53113934

  6. Entity Framework 教程——概述

    Entity Framework 基础 本教材将手把手教你使用entity framework,我们将使用entity framework 6.0和visual studio 2012. 以下表格是e ...

  7. Entity Framework查询生成大量的子查询,如何避免?求救

    最近使用Entity Framework做一个中型的项目,一张表含有千万条数据,并没有使用很复杂的查询,只是程序上使用了DTO进行帅选数据,且使用了分页,效果很不理想.经过跟踪sql,我发现很多简单的 ...

  8. 【Basics of Entity Framework】【EF基础系列1】

    EF自己包括看视频,看MSDN零零散散的学了一点皮毛,这次打算系统学习一下EF.我将会使用VS2012来学习这个EF基础系列. 现在看看EF的历史吧: EF版本 相关版本特性介绍 EF3.5 基于数据 ...

  9. EF是啥?【What is Entity Framework?】(EF基础系列2)

    EF产生的背景: 编写ADO.NET访问数据的代码,是沉闷而枯燥的,所以微软提供了一个对象关系映射框架(我们称之为EF),通过EF可以自动帮助我们的程序自动生成相关数据库. Writing and m ...

随机推荐

  1. 开始写自己的iOS技术博客了

    2015-09-26 中秋节前夕,开始写自己的iOS开发相关的技术博客,还请广大专业的人士批评指教!欢迎纠错和交流! 在来到北京的第二家公司艾亿新融资本管理的子公司——资配易.由于基本没有加班,也算有 ...

  2. PropertyGrid排序

    解决PropertyGrid对自定义属性排序的问题. 参考了:http://www.cnblogs.com/greatverve/archive/2012/02/08/propergrid-order ...

  3. java静态代码块、初始化块和构造方法的执行顺序

    分析:当执行new Child()时,它首先去看父类里面有没有静态代码块,如果有,它先去执行父类里面静态代码块里面的内容,当父类的静态代码块里面的内容执行完毕之后,接着去执行子类(自己这个类)里面的静 ...

  4. DataGrid3

    a标签,DataGrid的数据绑定 1.function aa(id, url) {            //alert(id);            window.open(url + '&am ...

  5. Microsoft Office Access 不能在追加查询中追加所有记录

    有客户反映,我们的软件ACCESS数据库版本在使用时会出现"Microsoft Office Access 不能在追加查询中追加所有记录"的错误.使用客户的数据库调试软件发现错误出 ...

  6. linux系统man查询命令等级与意义

    代号 意义 1 可执行程序和一般shell命令 2 系统调用函数 3 库函数 4 设备配置文件,通常在/dev下 5 配置文件,/ec下 6 游戏 7 协议及杂项 8 管理员命令 9 与内核相关

  7. javaScript 对json数据按key值排序

    var ajson= { "result":[ { "cid":1, "name":"aaa", "price ...

  8. U-Boot--配置过程分析

    arm核:arm920t    2410 uboot版本:u-boot1.1.6 通过readme可以知道配置执行make smdk2410_config命令. 顶层Makefile : smdk24 ...

  9. ADO.NET笔记——使用DataAdapter执行增删改操作

    相关知识: DataSet中的数据一旦从数据库下载下来,便不再与数据库保持联系.如果修改了DataSet中的数据,需要重新建立连接,并且通过SQL命令将修改更新到数据库去 编写SQL命令往往比较繁琐和 ...

  10. ASP.NET MVC 及 Areas 简单控制路由

    ASP.NET MVC中怎么去控制路由,这个想关的文章很多,我在这里就是自我总结一下,仅供参考. 1.我们新建一个项目,查看RouteConfig.cs,代码如下: public static voi ...