文档章节

第一章 实体框架入门

月影南溪
 月影南溪
发布于 2015/10/20 20:24
字数 1197
阅读 108
收藏 2
点赞 0
评论 0

什么是 Entity Framework

      什么是Entity Framework?Entity Framework简称EF(当然,搜索引擎不认的),它是一个 ORM框架,就是将 Model 和数据库表关联的一种框架。主要作用是,简化程序员对数据库操作的过程。它会自动根据你的配置(或配置文档、或注解)生成对应的表,会根据调用的方法不同自动拼接SQL语句(暂时这么认为,因为Hibernate是这样的,所以同理),或者干脆执行SQL语句。当然,既然简化了开发过程,肯定要牺牲一些东西的。因为是自动生成的,首先灵活性会下降很多,故而对于数据库设计的要求会比较高;其次,性能上也会牺牲一些。

     对于EF此类框架的评价就是,不要嫌弃它,因为它本身就是为了快速开发而设计的。如果用不到,或者相信自己的能力,额,可以考虑一下自己搞起。

Entity Framework开发模式

      EF开发分为Code First(代码优先)、Model First(设计优先)两个方向。当然,如果你要说还有 Database First的话,那就不太对了。因为Database First只能算是Model First的一种特殊情况。至于为什么这么说,一方面是因为官方是这么分的,另一方面等我大致分析一下,你就明白了。

为什么选择Code First

     Code First,又叫代码优先(应该不止我一个人这么叫的)。顾名思义,以代码为全部,不使用xml等配置文件,在代码中进行相关配置或者干脆不配置,使用默认的实现方式。

      说起这个来,我最早接触“约定优先”这个概念的时候是在 Asp.net MVC中看到的。“约定优先”这个概念的意思就是框架引擎不依照配置文件/不依照注解,仅仅通过继承关系、标识符、参数列表等信息确认方法或类。也就是说,自定义的类和方法需要遵守一定的命名规范,比如说必须以某串字符结束或开始。这样做就会有一个好处,不熟悉注解或配置的人也能很容易上手,只要仿照官方给定的模板就能开发。当然了,利于新手就不利于体现逼格了,最大的缺点就是如果手滑打错了,那就对不起了。废话这么多意思就是,EF的模型类也参照了这个约定。如果没有特别指定,引擎会根据约定优先进行操作。

      当然,因为“约定优先”灵活性太差,而且不能对某些列进行自定义,所以,EF又开放了两种方式:1) 注释;2) Fluent API。

     注释(Annotations)

      通过“[ ]”标注该属性或类的特性。关于这个,我很多时候会叫成注解,一方面叫注释的话会容易叫混(不要问我为什么),另一方面这种技术在Java Spring中称为注解。不得不感慨一句,中文博大精深啊。 具体实现会在后续中介绍,这里不说的原因是我还没细看,我也了解不是很多,好嘛。

      Fluent API

       这个怎么翻译啊?Fluent这里应该是(a.)流利的意思。这个就是,在代码自己定义 类-表,  属性-表字段 ,关系等等。应该属于工厂模式吧。

为什么选择Model First

       Model First,又称设计优先。说起来,这个应该是中英文最对不上的翻译了。为什么要叫设计优先呢,因为这种方式采用的是配置优先,依据配置文件解析模型层。因为这个配置文件相当复杂,曾经花了一下午啥都没看懂。对此,VS有一个图形化设计器,通过“拖拖拖”就能搞定模型层、配置文件、数据库表 这三者的创建和对应,就像是一个人通过画图设计出了一个数据库,所以就叫设计优先。

      Database First和Model First的关系

     Database First说的就是Model First中根据已有数据库VS自动生成模型类或开发人员自定义模型类这种情况。

注:以上内容只是我的浅显之见,仅供参考。而且可能会随着我对EF框架的熟悉会进行修改。说起EF框架来,这是一个很棒的框架,开发成本很低,而且灵活性也不差。

© 著作权归作者所有

共有 人打赏支持
月影南溪
粉丝 9
博文 7
码字总数 11228
作品 0
长沙
程序员
MyBatis3.2.x从入门到精通系列

Java框架篇---Mybatis 入门 MyBatis3.2.x从入门到精通之第一章 MyBatis3.2.x从入门到精通之第二章 MyBatis3.2.x从入门到精通之第三章 MyBatis3.2.x从入门到精通之第四章 MyBatis3.2.x从入门到...

HenrySun
2016/10/07
54
0
javascript入门经典【推荐】—新手必备、零基础学习

本书目录 第一章: JavaScript语言基础第二章: JavaScript内置对象 第三章: 窗口window对象 第四章: 文档document对象 第五章: 表单form对象 第六章: History与Navigator对象 第七章: ...

a125138
2012/08/01
0
0
SpringBoot集成Redis实现缓存处理(Spring AOP实现)

第一章 需求分析 计划在Team的开源项目里加入Redis实现缓存处理,因为业务功能已经实现了一部分,通过写Redis工具类,然后引用,改动量较大,而且不可以实现解耦合,所以想到了Spring框架的A...

Javahih
2017/12/14
0
2
慕课SpringMVC从入门到精通系列

SpringMVC从入门到精通之第一章 SpringMVC从入门到精通之第二章 SpringMVC从入门到精通之第三章 SpringMVC从入门到精通之第四章 SpringMVC从入门到精通之第五章 SpringMVC从入门到精通第六章...

HenrySun
2016/10/08
72
0
Python+Selenium搭建UI自动化测试框架

本文原文来自GitHub个人主页 > Python+Selenium搭建UI自动化测试框架 Python语言是非常强大的编程语言,很多时候也拿来当脚本语言用。 Selenium是web应用测试工具,支持Java、Python等多种语...

FunGa
2015/09/06
7.8K
0
第一章:Maven环境下如何配置QueryDSL环境

QueryDSL是一个通用的查询框架,框架的核心原则是创建安全类型的查询,开始QueryDSL仅支持Hibernate(HQL),在不断开源人士加入QueryDSL团队后,陆续发布了针对JPA,JDO,JDBC,Lucene,Hib...

恒宇少年
2017/07/01
0
0
PDF.NET 开发框架之 SOD 框架 Ver 5.2 正式发布

PDF.NET 开发框架之 SOD框架 Ver 5.2.1.0307 正式版发布,包含以下部分: SOD_Pwmis.Core --包括下列数据提供程序 SqlServer SqlServerCe Access OleDb ODBC Oracle --包含框架的核心类库 PD...

独行族妖侠
2015/03/08
1K
8
JFinal极速开发实战教程新鲜出炉~

JFinal极速开发实战教程新鲜出炉~ [持续更新中...] JFinal框架让 IT 工程师发挥更大的潜能,实现更大价值,同时也希望 JFinal 工具力量能帮助正在创业的朋友们提升效率、降低成本从而实现创业...

山东-小木
2015/01/07
0
13
GentleNet使用之详细图解[语法使用增强版]

目录 第一章 开发环境 第二章 简介 第三章 Gentle.Net-1.5.0 下载文件包介绍 第四章 使用步骤 第五章 源码下载 第一章、开发环境: Vs 2010 + Sql 2005 + GentleNet 1.5.0 【Web网站程序...

黄欣怡
2017/06/13
0
0
《Kinect入门:自然用户界面编程》

副标题: Programming and Scripting Natural User Interfaces 作者: Sean Kean / Jonathan Hall / Phoenix Perry 出版社: Apress 出版年: 2011-11-14 页数: 150 定价: USD 29.99 装帧: Paper......

李辉
2012/02/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Laravel5.5 MySQL配置、读写分离及操作

Laravel 让连接不同数据库以及对数据库进行增删改查操作: 参考:http://laravelacademy.org/post/854.html 配置读写分离 应用的数据库配置位于 config/database.php(但是数据库用户及密码等...

MichaelShu
4分钟前
0
0
TraitsUI与Mayavi实例

一:创建一个简单的TraitsUI与Mayavi实例 # -*- coding: utf-8 -*-from numpy import sqrt,sin,mgridfrom traits.api import HasTraits,Instancefrom traitsui.api import View,Item......

wangxuwei
9分钟前
0
0
Linux 查看用户

存储帐号的文件:/etc/passwd 存储密码的文件:/etc/shadow 查看当前系统所有用户 grep bash /etc/passwd root修改普通用户的密码 sudo passwd user_name 然后连续两次输入新的用户密码即可...

yeahlife
11分钟前
0
0
Webpack使用nodemon实时打包编译

业务场景: 1.编写一个npm组件包并且link到了项目文件中 2.需要不断的修改并run build编译npm包并且在项目run dev 查看效果 3.问题: 每次改完npm包都要手动run build编译十分的麻烦且低效,可不...

JamesView
22分钟前
0
0
电脑炸了,浪费我好几天时间,还是简要记下来吧

我的小本本一直在兢兢业业的干活,然而前几天说炸就炸了...... 爆炸现场: 软件: windows10 pro + EIS11+ 360卫士 BIOS:N1DET98W 2.24 硬件: Xeon E3 1505-V5 nv-M3000M thinkpadP70:20E...

Oh_really
26分钟前
0
0
Git之branch和checkout

1.branch是查看、创建、删除分支 #>git branch --helpNAME git-branch - List, create, or delete branchesSYNOPSIS git branch [--color[=<when>] | --no-color] [......

汉斯-冯-拉特
28分钟前
0
0
Mybatis拦截器之数据权限过滤与分页集成

需求场景 最近项目有个数据权限的业务需求,要求大致为每个单位只能查看本级单位及下属单位的数据,例如:一个集团军下属十二个旅,那么军级用户可以看到所有数据,而每个旅则只能看到本旅部...

佛系程序猿灬
37分钟前
9
0
SpringCloud 微服务 (十六) 服务追踪 Zipkin

问题 在服务中,有一个接口,该A接口中又调用了其他服务的B、C、D接口,出现一个请求耗时大的问题,这时候并不知道该B、C、D接口中哪个接口造成的耗时量,然后比如确定C服务接口出现的耗时量大,但...

___大侠
今天
0
0
Java面试基础篇——第八篇:抽象类与接口的区别

1.抽象类 抽象类:如果一个类中包含有抽象方法,或这个类使用abstract关键字修饰,则称这个类是抽象类。 抽象方法是什么呢?抽象方法就是指用abstract关键字修饰的方法。 需要注意的是:抽象...

developlee的潇洒人生
今天
2
0
jsoup 相关资料

1.jsoup 2.Jsoup概述 3.jsoup入门 4.jsoup Java HTML Parser 1.11.3 API

IT追寻者
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部