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 = "",
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 基础的更多相关文章
- ADO.NET 之 Entity Framework 基础
Entity Framework(EF)是使用直接映射到应用程序中业务对象的对象模型于关系数据库进行交互.它没有将数据视为行和列的集合,而是将其视为强类型对象(成为实体)的集合. 术语:LinQ to ...
- Entity Framework基础01
学习了ADO.NET的相关知识,掌握了它对数据库表的基本操作,但是实际在开发项目应用中微软为我们开发ef这个ORM,使用它可以很方便的利用ADO.NET来操作DBMS,使得我们开发项目的着重点放在业务 ...
- Entity Framework 基础操作(1)
EF是微软推出的官方ORM框架,默认防注入可以配合LINQ一起使用,更方便开发人员. 首先通过SQLSERVER现在有的数据库类生产EF 右键->添加->新建项,选择AOD.NET实体数据 ...
- Entity Framework 基础知识走马观花
本文目录: 一.EF中的edmx文件探秘 二.EF中的代理模式探秘 三.EF中的延迟加载与即时加载 一.EF中的edmx文件 1.1 emdx文件本质:一个XML文件 (1)通过选择以XML方式打开e ...
- Entity Framework基础
http://blog.csdn.net/hurtlingsnail/article/details/53113934
- Entity Framework 教程——概述
Entity Framework 基础 本教材将手把手教你使用entity framework,我们将使用entity framework 6.0和visual studio 2012. 以下表格是e ...
- Entity Framework查询生成大量的子查询,如何避免?求救
最近使用Entity Framework做一个中型的项目,一张表含有千万条数据,并没有使用很复杂的查询,只是程序上使用了DTO进行帅选数据,且使用了分页,效果很不理想.经过跟踪sql,我发现很多简单的 ...
- 【Basics of Entity Framework】【EF基础系列1】
EF自己包括看视频,看MSDN零零散散的学了一点皮毛,这次打算系统学习一下EF.我将会使用VS2012来学习这个EF基础系列. 现在看看EF的历史吧: EF版本 相关版本特性介绍 EF3.5 基于数据 ...
- EF是啥?【What is Entity Framework?】(EF基础系列2)
EF产生的背景: 编写ADO.NET访问数据的代码,是沉闷而枯燥的,所以微软提供了一个对象关系映射框架(我们称之为EF),通过EF可以自动帮助我们的程序自动生成相关数据库. Writing and m ...
随机推荐
- [转]Mac OS X 下部分Android手机无法连接adb问题之解决方案
时至当今,Android山寨手机厂商已如此之多,能修改和个性化定制Android OS的能人已是多如牛毛,有的牛人修改Android系统只会影响所修改的点,不会影响其它,然后还有的就不多说了,总之做的 ...
- Winform实现鼠标可穿透的窗体镂空效果
今天找到一个名叫LICEcap的录屏软件,录制界面是这样的: 这个炫酷的空心窗口就是镜头,调整好大小,然后对准需要录制的地方按下Record就可以生成gif了. 卧槽太NB了我也要做一个! 根 ...
- unicode 汉字编码表
啊:21834 阿:38463 埃:22467 挨:25384 哎:21710 唉:21769 哀:21696 皑:30353 癌:30284 蔼:34108矮:30702 艾:33406 碍:308 ...
- .net 后台中对html标签按钮跳转后台以及后台简单验证
---------------------------------学霸,学神,大牛,hacker请绕道de分割线-------------------------------------------- ...
- OC4_XML文件解析
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-// ...
- MYSQL基础01(新增,修改,删除)
首先说明一下,本人之前一直都是用MSSQL,由于工作原因,每天写上百条sql语句,并持续了几年;由于换了工作目前主要接触的MYSQL;所以现在开始学习MYSQL. 我的学习计划很简单,我在MSSQL使 ...
- 数据挖掘:Weka代码学习
在Eclipse中配置Weka,在Eclipse中新建一个Java Project,然后在Eclipse的Resource目录中,在新new的Project上右键选择Build Path中选择add ...
- bzoj2395[Balkan 2011]Timeismoney最小乘积生成树
所谓最小乘积生成树,即对于一个无向连通图的每一条边均有两个权值xi,yi,在图中找一颗生成树,使得Σxi*Σyi取最小值. 直接处理问题较为棘手,但每条边的权值可以描述为一个二元组(xi,yi),这也 ...
- 如何判断一个js对象是不是Array
1. instance of 2.constructor 3. isArray 1.var a=new Array(); a instanceof Array; //true 2.var a=new ...
- ubuntu下安装 Source insight
习惯了在source insight下编辑阅读源码,在linux下用vi总是用不好 ,还是在ubuntu上用回熟悉的source insight. 在ubuntu中,安装windows程序用wine, ...