EntityFramework是什么?
1.是对ADO.NET 更高封装的ORM (对象关系映射)框架,跟Nhibernate类似
2.用面向对象的方式来操作关系数据库
3.目标: 提高开发效率,减轻维护工作
4.原理
LINQ to Entities 和 Entity SQL : EF 的两种查询语言,前者用Linq 方式查询,后者用SQL方言(比较少用)
Object Service : 将 Entity Client Data Provider 返回的数据 转换成 实体对象结构
Entity Client Data Provider : 主要作用是将 LINQ to Entities 和 Entity SQ 这些查询转换为 数据库的SQL查询
ADO.Net Data Provider : 执行 Entity Client Data Provider 生成的数据库SQL
总结 : 面向对象查询--> 通过EF ->生成相应数据库SQL --> ADO.NET 执行
怎么用?
1 . 生成实体框架模型
右击项目->添加->新建项->ADO.NET 实体数据模型->添加- >下一步->新建连接或者使用已有连接->
选择保存敏感数据->下一步->选择要映射的表,存储过程或者其他对象->完成
2 .增删改查
static void Main(string[] args) { using (AnuoDogEntities1 db = new AnuoDogEntities1()) { //增加 UserInfo uf = new UserInfo(); uf.UserName = "anuo"; uf.PassWord = "123"; uf.Address = "成都"; db.AddToUserInfo(uf); db.SaveChanges(); //删除 UserInfo ufd = db.UserInfo.FirstOrDefault(ee => ee.UserName == "anuo"); db.DeleteObject(ufd); db.SaveChanges(); //修改 UserInfo ufx = db.UserInfo.FirstOrDefault(ee => ee.UserName == "anuo"); ufx.UserName = "anuodog"; db.SaveChanges(); //查询 LINQ to Entities var data = from userInfo in db.UserInfo where userInfo.UserName == "anuo" select new { userName = userInfo.UserName, password = userInfo.PassWord }; string name = ""; foreach (var item in data) { name += item.userName; } //表连接查询(左连接) var query = from userInfo in db.UserInfo join productInfo in db.ProductInfo on userInfo.Id equals productInfo.UserId select new { userName = userInfo.UserName, productName = productInfo.ProductName }; } }
应用场景?
优点 : 开发效率高,适合简单数据操作
缺点 : 性能低 , 不适合复杂数据操作
怎么个性能低?
比原生的ADO.NET 确实慢得多. 适合小数据简单操作
原文链接 :
http://blogs.msdn.com/b/adonet/archive/2012/02/14/sneak-preview-entity-framework-5-0-performance-improvements.aspx
开发模式?
Database First 数据库首先 : 先设计好数据库 ,再从数据库生成实体模型
Model First 模型优先 : 先设计好模型 ,再从模型生成数据库
Code First 代码优先 : 编好代码,再从代码生成或映射数据库
资源?
入门: http://www.cnblogs.com/xray2005/category/189491.html
教程: http://www.entityframeworktutorial.net/
MSDN:
http://msdn.microsoft.com/zh-cn/library/bb399572(v=vs.100).aspx
主页: http://msdn.microsoft.com/zh-CN/data/ef
源码: https://github.com/aspnet/EntityFramework
团队blog: http://blogs.msdn.com/b/adonet/