使用EF之前必须要对EF有个宏观的了解.学习任何一种技术都要像门卫一样问几个问题.

第一,它是谁?

第二,从哪里来?

第三,到哪里去?

默念一遍:不谋全局者,不足谋一域.

今天老师宏观给讲了一下EF的好处,抛出为什么要用EF的问题,我们的回答仅仅是概念和技术上的浅显的认识,老师的话我并未全部理解.先来整理一下自己所认识的EF吧.

Entity Framework是ORMapping的一种具体实现,那ORMapping又是什么呢?ORM--ObjectRelation Mapping,即对象关系映射框架/数据持久化框架,是根据实体对象操作数据表中数据的一种面向对象的操作框架.

其实Entity Framework的底层也是调用Ado.Net,它是更高层次的封装.作为数据访问的技术,EntityFramework的设计有高扩展性,这一点可体现在其映射定义的灵活性.简单地说,使用Entity Framework可以充分地定义与数据库表映射的实体,这个实体可以直接用于业务逻辑层或作为服务的数据契约.使用EF后,可以将实体类的设计工作完全放在EDM的设计过程中,而不需要手工写那些大同小异的代码,令人欣喜的是这个实体模型可以在运行时修改并生效,做到一改全改.我们开发时也不用再频繁地与数据库打交道,我们操作实体模型的同时EF框架自动完成了对数据库的操作.

对于一种新了解的技术,了解宏观是必须的,但是要想尽快熟悉还是要做一做的,写一写demo.这次底层设计一直在讨论教育云平台的实体部分使用哪种模式,我们知道网络上特别流行Codefist,下面就来说一说EF框架划分的模式:

  • DataBase First
  • Model First
  • CodeFirst

  DataBase First传统的表驱动方式创建EDM,然后通过EDM生成模型和数据层代码。除生成实体模型和自跟踪实现模型,还支持生成轻型DbContext。

  Model First先创建EDM模型,再生成DDL数据库脚本和模型和数据层代码。除生成实体模型和自跟踪实现模型,支持生成轻型DbContext。

  Code First手动创建POCO模型,数据层DbContext及映射关系,通过Database.SetInitializer生成数据库,这种方式较灵活,但是代码工作较多。

  虽然Code First灵活,但是我们不可能手工去写大量的POCO类和映射关系。所以我们此次开发选择Model First.

【.NET】EF框架之三种模式相关推荐

  1. 第十四节: EF的三种模式(四) 之 原生正宗的 CodeFirst模式的默认约定

    一. 简介 1. 正宗的CodeFirst模式是不含有edmx模型,需要手动创建实体.创建EF上下文,然后生成通过代码来自动映射生成数据库. 2. 旨在:忘记SQL.忘记数据库. 3. 三类配置:On ...

  2. 第十一节: EF的三种模式(一) 之 DBFirst模式(SQLServer和MySQL两套方案)

    一. 简介 EF连接数据库有三种模式,分别是DBFirst.ModelFirst.CodeFirst,分别适用于不同的开发场景. 该章节,将主要介绍EF的DBFirst连接SQLServer数据库和M ...

  3. 第十三节: EF的三种模式(三) 之 来自数据库的CodeFirst模式

    一. 简介 [来自数据库的Code First模式]实质上并不是CodeFirst模式,而是DBFirst模式的轻量级版本,在该模式中取消了edmx模型和T4模板,直接生成了EF上下文和相应的类,该模 ...

  4. 第十二节: EF的三种模式(二) 之 ModelFirst模式(SQLServer为例)

    一. 简介  顾名思义,ModelFirst是模型优先,是DBFirst的逆向模式,先建立实体数据模型,然后根据实体数据模型来生成数据库,从而驱动整个开发流程.(生成一个空的edmx文件,手动在里面建 ...

  5. 集合框架之三种迭代的能否删除

    一:普通for循环的删除 1 // 普通for循环,通过索引删除,删除后索引要-- 2 for (int i = 0; i < list.size(); i++) { 3 if ("d ...

  6. LVS学习笔记之三种模式的特点概括

    NAT: 1.RealServer应该使用私有IP地址: 2.RealServer的网关应该指向DIP: 3.RIP和DIP应该在同一个网段内: 4.进出的报文都得经过Directory,在高负载下, ...

  7. thinkphp 框架两种模式 两种模式:开发调试模式、线上生产模式

    define('APP_DEBUG',true/false); 转载于:https://www.cnblogs.com/supermanGuo/p/7325606.html

  8. 第六节:框架搭建之EF的Fluent Api模式的使用流程

    一. 前言 沉寂了约一个月的时间,今天用一篇简单的文章重新回归博客,主要来探讨一下Fluent Api模式在实际项目中的使用流程. 1. Fluent API属于EF CodeFirst模式的一种,E ...

  9. .net ef 字段不区分大小写_第六节:框架搭建之EF的Fluent Api模式的使用流程

    一. 前言 沉寂了约一个月的时间,今天用一篇简单的文章重新回归博客,主要来探讨一下Fluent Api模式在实际项目中的使用流程. 1. Fluent API属于EF CodeFirst模式的一种,E ...

最新文章

  1. 计算机教师简介50字,教师风采个人简介50字数.docx
  2. gwt-2.8.2下载_从GWT开发人员的角度概述Scala.js
  3. leetcode 1. 两数之和 思考分析
  4. 【转】ABP源码分析二十四:Notification
  5. 分布式数据层中间件详解:如何实现分库分表+动态数据源+读写分离
  6. python输入输出代码_python基本输入输出代码示例
  7. linux查看命令的帮助文档,Linux查看命令和帮助文件位置
  8. LeetCode刷题(37)--Edit Distance
  9. SharpDevelop--一款很不错的.NET开发工具
  10. Javascript特效:tab标签
  11. Pyinstaller打包过程中报错“AttributeError: module 'enum' has no attribute 'IntFlag'”问题解决
  12. [php] 解析JSON字符串
  13. 0x80070079信号灯超时_onedrive下载文件时,出现”0x80070079信号灯超时时间已到”...
  14. 遥感原理与应用总结——第一章:遥感原理的基本概念
  15. Deep Retinex Decomposition for Low-LightEnhancement (2018 BMCV,含代码)
  16. 广域网宽带接入技术三PON技术
  17. 利用Python分析新旧页面的A/B测试结果
  18. 淘宝卖家过劳死VS跳楼死
  19. os什么意思python_Python中import os是什么意思?
  20. rsa java模数_公钥/私钥中的RSA密钥值和模数

热门文章

  1. 《游戏引擎浅入浅出》
  2. SLC NAND FLASH的物理结构
  3. MCU电子方案开发 MUC单片机 EM78P372N 8位OTP微控制器
  4. 无符号格式化输出的区别%d,%u?
  5. 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文但“good”不是回文,试写一个算法判断给定字符是否为回文。
  6. 编码乱码问题解释,解决Tomcat乱码的最快速有效办法。【希望能够指正】
  7. RIP动态路由配置 命令| 配置题
  8. 计算智能 — 模糊计算
  9. 栈和队列、堆、堆栈的区别?
  10. FBW7通过端粒脱帽介导肺纤维化和衰老