概要

Entity Framework缩写EF,微软ORM产品。

本篇博客将简单的介绍它,至于它的详细深层次的使用,大家能够查询对应的操作手冊,该篇不过入门。

Entity Framework和Linq to Sql的关系

大家都知道Linq to Sql是微软ORM思想的一个详细产品。Entity Framework也是它的一个详细产品,那么,这两个产品有什么差别呢?

Linq to Sql是ORM思想实现的一个轻量级的框架,Entity Framework是一个重量级框架;

Linq to Sql和Entity Framework的一个重要的差别就是,Linq to Sql仅仅能针对于SQL Server数据库,而Entity Framework能够针对于非常多的数据库(Oracle,SQL Server等),也就是说Entity Framework是跨数据库的。不要小看这一点,在实际的开发中,非常的牛叉,以下我们举例说明。

我们使用经典三层构建一个项目,我们须要写自己的D层,假设此时我们换了数据库,那么,我们须要重写D层。假设我们在创建这个项目的时候,使用了Linq to Sql,那么我们的D层创建的很的简单,可是,当我们换数据库的时候,Linq to Sql框架就无论用了;假设我们在创建这个项目的时候,使用了Entity Framework框架,那么。我们仅仅须要改一个配置文件就能够了,不须要改动程序中的代码。

为什么使用Linq to Sql或Entity Franework

回答这个问题,我们就要说一说D层存在的问题了。

我们写D层的时候。我们一般会抽象出来一个SQLHelper类,这个类实现了对数据库的增删查改,然后,我们再创建对应的D层类。这些D层类里面的方法的功能,事实上都一样,唯一不同的就是SQL。从这里我们能够看到。我们的D层的问题,那就是,我们反复性的书写一些不必要的类或者方法,解决这种方法就须要慢慢的抽象。抽象出共同拥有的东西,像:DataTable装换为实体集。操作数据库的几类方法(注意其參数),然后将其一整合。这个大致就是我们所属的ORM思想实现的雏形了。当然,上面所说的那些东西。Linq
to Sql或Entity Framework这些框架已经帮助我们实现了,我们仅仅须要使用它们提供的方法即可了,从这里我们也能够看到。假设我们使用这些框架。我们程序猿在编程的时候。差点儿不须要管理D层的东西,仅仅须要关注业务的实现就能够了。

Entity Framework的实例

SQL脚本

  1. CREATE DATABASE DBFirst
  2. GO
  3. USE DBFirst
  4. GO
  5.  
  6. CREATE TABLE T_Customer
  7. (
  8. ID INT PRIMARY KEY IDENTITY(1,1),
  9. CusName VARCHAR(20) NOT NULL
  10. )
  11. CREATE TABLE T_Order
  12. (
  13. ID INT PRIMARY KEY IDENTITY(1,1),
  14. CustomerID INT FOREIGN KEY REFERENCES T_Customer(ID),
  15. DepName VARCHAR(20) NOT NULL
  16. )

程序代码

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamliZW4ycWluZ3NoYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6.  
  7. namespace EF.EntityFrameworkDemo
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. #region 加入实体
  14. ////创建上下文对象
  15. //DBFirstEntities dbFirst = new DBFirstEntities();
  16. ////操作实体
  17. //T_Customer customer = new T_Customer();
  18. //customer.CusName = "新添用户";
  19. ////附加在上下文
  20. //dbFirst.T_Customer.AddObject(customer);
  21. ////保存
  22. //dbFirst.SaveChanges();
  23. #endregion
  24.  
  25. #region 删除实体
  26. ////1、创建上下文对象
  27. //DBFirstEntities dbFirst = new DBFirstEntities();
  28. ////2、创建实体
  29. //T_Customer customer = new T_Customer();
  30. //customer.ID = 9;
  31. ////3、将实体附加到上下文里面来进行管理
  32. //dbFirst.T_Customer.Attach(customer);
  33. ////改动实体的状态
  34. //dbFirst.ObjectStateManager.ChangeObjectState(customer, EntityState.Deleted);
  35. ////4、上下文操作数据库
  36. //dbFirst.SaveChanges();
  37. #endregion
  38.  
  39. #region 改动实体
  40. ////1、创建訪问数据库的上下文对象
  41. //DBFirstEntities dbFirst = new DBFirstEntities();
  42. ////2、改动对象
  43. //T_Customer customer = new T_Customer();
  44. //customer.ID = 4;
  45. //customer.CusName = "用户4_改动后2";
  46. ////3、附加到数据库
  47. //dbFirst.T_Customer.AddObject(customer);
  48. ////改动对象状态
  49. //dbFirst.ObjectStateManager.ChangeObjectState(customer, EntityState.Modified);
  50. ////4、上下文更新数据库
  51. //dbFirst.SaveChanges();
  52. #endregion
  53.  
  54. #region 查询
  55. DBFirstEntities dbFirst = new DBFirstEntities();
  56.  
  57. foreach (var item in dbFirst.T_Customer)
  58. {
  59. Console.WriteLine(string.Format("ID:{0} Name:{1}",item.ID,item.CusName));
  60. }
  61. #region linq表达式
  62. T_Customer cs = (from customer in dbFirst.T_Customer where customer.ID == 2 select customer).SingleOrDefault();
  63. Console.WriteLine("ID:{0} Name:{1}",cs.ID,cs.CusName);
  64. #endregion
  65.  
  66. #endregion
  67.  
  68. Console.ReadKey();
  69. }
  70. }
  71. }

总结

EF的使用大致能够分为:DBFirst(数据库为中心)和ModelFirst(实体为中心),以上是DBFirst型号。至于ModelFirst。你可以搜索一下。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

Entity Framework基金会的更多相关文章

  1. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  2. Entity Framework Core 1.1 升级通告

    原文地址:https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-entity-framework-core-1-1/ 翻译:杨晓东 ...

  3. Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制

    将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...

  4. 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)

    前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...

  5. 来,给Entity Framework热热身

    先来看一下Entity Framework缓慢的初始化速度给我们更新程序带来的一种痛苦. 我们手动更新程序时通常的操作步骤如下: 1)把Web服务器从负载均衡中摘下来 2)更新程序 3)预热(发出一个 ...

  6. 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)

    前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...

  7. Entity Framework教程(第二版)

    源起 很多年前刚毕业那阵写过一篇关于Entity Framework的文章,没发首页却得到100+的推荐.可能是当时Entity Framework刚刚发布介绍EF的文章比较少.一晃这么多年过去了,E ...

  8. Entity Framework 6 Recipes 2nd Edition 译 -> 目录 -持续更新

    因为看了<Entity Framework 6 Recipes 2nd Edition>这本书前面8章的翻译,感谢china_fucan. 从第九章开始,我是边看边译的,没有通读,加之英语 ...

  9. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点

    在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...

随机推荐

  1. 获取中央气象台API 完整城市列表简单方式

    activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android& ...

  2. Score(规律)

    Score Time Limit : 5000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submiss ...

  3. 百度复制SQL语句

    本词条从基础知识.判断对象和应用技巧等方面,介绍了SQL(Structured Query Language)结构化查询语言的应用方法. 目录 1基础 ▪ 创建数据库▪ 删除数据库▪ 备份sql se ...

  4. myeclipse 8.6 插件安装之SVN

    在这里我要说明一点,myEclipse 8.6的插件安装和之前的版本可能会有一些区别,下面是SVN插件的安装: 1.从官网下载site-1.6.13.zip文件,网址是:subclipse.tigri ...

  5. fork 函数的一点学习

    昨天某位少年问了我一个问题,#include<stdio.h> int main() { fork(); fork(); fork(); printf("hello " ...

  6. Regex阅读笔记(三)之固化分组

    符号:?> 使用?>的匹配与正常的匹配无区别,但是如果匹配进行到此结构之后,此结构体的所有备用状态都会放弃,也就是括号内的子表达式中未尝试过的备用状态都不复存在了. 例如'(\.\d\d( ...

  7. c语言中双维数组与指针的那点事儿

    说起c语言的指针,估计对c语言只是一知半解的同志们可能都会很头疼,尤其它跟数组又无耻的联系到一起的时候,就更加淫荡了!!! 怎么说呢,就是有一点规定:(或准则) 数组名可以看成是指向数组头元素的指针, ...

  8. ALEXANDER WANG 北京旗舰店开业活动

    ALEXANDER WANG 北京旗舰店开业活动-搜狐女人 ALEXANDER WANG 北京旗舰店开业活动

  9. [Django实战] 第9篇 - 表单、视图、模型、模板的交互

    本章通过实现一个用户提交任务请求的页面,讲述表单.视图.模型.模板间的交互. 首先,我们需要定义一个表单(forms.py) class CreatetaskForm(forms.Form): cre ...

  10. Flow Problem(最大流)

    Flow Problem Time Limit: 5000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...