实体框架 (EF) 入门 => 一、我该用哪个工作流?
入门的参考资料:http://msdn.microsoft.com/zh-cn/data/ee712907
本篇的参考资料:http://msdn.microsoft.com/zh-cn/data/jj590134

教程说的很明白,虽然听不太懂,不过也能看懂 
我该用哪个工作流?换句话说,也就是使用EF有哪几种方式,哪种方式更适合你,更适合你当前要开发的项目。
一、该不该使用EF
这个问题很复杂,个人认为,大中型项目,不宜使用EF。
中小型项目,可以使用EF。
二、使用EF的三种方式
1、Database First:
数据库优先,就是你先建好数据库,然后再根据数据库生成Model。
这种方式唯一的缺点就是需要你去建实体对象的partial类,在partial类中设置特性等。
感觉还是这种方式是最好的,只是没有CodeFirst新潮啊,所以啊,很难留住那些花心的男人。
2、Code First:
代码优先,就是先建立实体类,然后根据实体类生成数据库。
这种方式不需要partial类,你在写实体类的时候,顺便也会把特性写上。
这种方式使用起来也不像微软说的那样容易,你既要懂数据库,又要懂Code First的各种约定、技巧,个人感觉比 Database First 入门更难。并且,操作不当的话,很有可能带来灾难性的后果,因为你一个错误的代码,就有可能导致数据库暴动。
3、Model First:
不想学这个,不男不女的。
三、你该选择哪种方式:
- 如前面所说,大中型项目,你就不该使用EF。(有些人要说,大中型项目,你都不该使用.net,嘿嘿,说吧说吧,言者无罪)
- 如果是中型项目,应该使用 Database First。
- 小型项目,可以使用Code First。当然得是熟练工啊,像我这种菜鸟,只能在这写学习笔记。
四、Code First 的两种方式:
1、在原有数据库上使用 Code First。这没有什么好说的,我前面已经学过了,不是全新的数据库,就得使用这种方式。
2、在新数据库上使用 Code First。如果是全新的项目,当然要使用这种方式。不过一般很少会出现这种情况,你至少要把一些基本的东东弄进去吧,比如用户、权限、日志等,可能还要使用其它数据库中的数据,所以,全新的,很难找啊,除非去幼儿园。
实体框架 (EF) 入门 => 一、我该用哪个工作流?的更多相关文章
- 实体框架 (EF) 入门 => 三、CodeFirst 支持的完整特性列表
KeyAttribute 设置主键.如果为int类型,将自动设置为自增长列. 系统默认以Id或类名+Id作为主键.StringLengthAttribute 可设置最大最小长度以及验证提示信息等.最大 ...
- 实体框架 (EF) 入门 => 六、性能注意事项
这个还真是复杂,看了看微软的文档,有些根本就看不懂,有些能看懂,但对我这种菜鸟也不会去用. 无从下手啊,前面放了几个链接,挨个试试吧. 一.显式打开连接 这个我测试过,有些时候,需要我们显示打开连接, ...
- 实体框架 (EF) 入门 => 二、在全新的数据库中使用 Code First
学习资料:http://msdn.microsoft.com/zh-cn/data/jj193542 视频建立的控制台应用程序,我在这里使用MVC. 一.非常有磁性的,非常优雅 很喜欢看这个人的视频, ...
- 实体框架 (EF) 入门 => 四、CodeFirst 枚举支持
当使用 Code First 开发时,通常是从编写用来定义概念(域)模型的 .NET Framework 类开始. 插入记录没有为 Budget 赋值. 数值类型默认值为0,数据库中都为not nul ...
- 实体框架 (EF) 入门 => 五、连接和模型
public class BloggingContext : DbContext { public BloggingContext() : base("name=Blo ...
- Entity Framework(实体框架 EF)
什么是Entity Framework呢(下面简称EF)? EF(实体框架)是ADO.NET中的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架.ORM(对象关系映射框架):指的是面向 ...
- .NET实体框架EF之CodeFirst
ADO.NET Entity Framework 以 Entity Data Model (EDM) 为主,将数据逻辑层切分为三块,分别为 Conceptual Schema, Mapping Sch ...
- EntityFramework_MVC4中EF5 新手入门教程之一 ---1.创建实体框架数据模型
Contoso University Web 应用程序 你会在这些教程中构建的应用程序是一个简单的大学网站. 用户可以查看和更新学生. 课程和教师信息.这里有几个屏幕,您将创建. 这个网站的用户界面 ...
- 译 - 第 1 章:EF入门
章节信息 Entity Framework 6 Recipes 第二版第一章: Chapter 1: Getting Started with Entity Framework ----------- ...
随机推荐
- 【Python】django表单与提交
参考:http://djangobook.py3k.cn/2.0/chapter07/ 本文的内容应属于django的表单模块,没有涉及到的后端request对象的处理方法可以单独深入学习表单. UR ...
- 【Linux】部署cobbler
环境Centos 6.3,本地挂载镜像配置本地yum源 yum -y install dhcp httpd xinetd tftp-server http://dl.fedoraproject.org ...
- css实现div悬浮层,始终停留在浏览器的最下方,不随页面的滚动条滚动改变位置或消失
.bottom_xf{ background-color:#1D69A9; width:100%; height:2.8em; margin:0 auto; overflow:hidden; posi ...
- zedboard如何从PL端控制DDR读写(二)——AXI总线
虽然Xilinx已经将和AXI时序有关的细节都封装起来,给出了官方IP和向导生成自定义IP,用户只需要关注自己的逻辑实现,但是还是有必要简单了解一下AXI的时序,毕竟咱是做硬件设计的. AXI(Ad ...
- 通过string型类名实例化一个类
DataTable dt = new DBHelper().getIndexInfo(code_id); DataRow row = dt.Rows[0]; string dllName = row[ ...
- ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库.现在提供一种方法解决这种问题,那就是在ORACLE中杀不 ...
- Android IOS WebRTC 音视频开发总结(十三)-- ice原理
以前在做一个视频监控项目的时候,刚开始客户没提到要支持P2P,因为服务端是我们自己写的,为了便于处理一些逻辑,全部采用转发的方式,后来客户要求支持P2P,没办法了,后来自己部署了一个STUN服务器(不 ...
- scala学习笔记1
一.REPL scala解释器读到一个表达式,对它进行求值,将它的打印出来,接着再继续读下一个表达式.这个过程被称作 读取-打印-循环,即REPL. 从技术上讲,scala程序并不是一个解释器.实际发 ...
- 怎样用foreach去修改数组之中的数据
$table_exchange=array(1,2,3,4,5,6,7,8); foreach ($table_exchange as $b=>$c){ $table_exchange[$b]= ...
- Yii 操作提示框实现
如图: html + css 代码: 这是 YII 模板的写法 欢迎使用Yii <style> div.success{ background: #C5FBBD; border: ...