Entity Framework 之 Code First
使用NuGet助您玩转代码生成数据————Entity Framework 之 Code First
[前言] 如果是Code First老鸟或者对Entity Framework不感兴趣,就不用浪费时间往下看了。
记得09年第一次接触ORM————Linq2Sql,从此对她的爱便一发不可收拾,一年后,新的工作用上了EF,突然感觉彷佛是生活中出现了一个与你的爱人一样优秀但却没有你爱人缺点的Girl,真的难以抗拒。后来又因为各种缘故,接触EF越来越少,直到最近没那么忙才重拾EF。
关于EF我就不废话了,如果是EF新人(对Code First而言我也绝对是个新人),个人觉得还是从Code First去学吧。
瞎诌结束,以下为本文主题。
由于园子里关于EF的介绍已经有很多,但是本人做Code First还是走了不少曲折之路(主要在Code=>DB),故而编写本文分享。在Code First中,编写完代码并运行之后,我们的Model会同步到Db中,但是往往我们需要的是编写完Model就生成数据库,而不是等UI部分完成并运行之后才看到数据库,借助NuGet程序包管理器可以让我们即时完成Code=>DB。
准备:1.本人开发工具为VS2012,使用的是.NET Framework 4.5(EF5);
2.然后确保已在VS扩展中安装了最新的“NuGet程序包管理器”;
3.常用的三行NuGet用于EF命令(当然可以直接用命令“get-help EntityFramework”获取):“Enable-Migrations” --在对应项目中启用、“Add-Migration <名称>” --搭建基架、“Update-Database” --提交(应用基于代码的迁移)
4.新建类库项目“CodeFirst”。
开始:
1.在vs打开“程序包管理控制台”,输入“get-help NuGet”回车,可以查看一些命令。

2. 在程序包管理控制台输入“Install-Package EntityFramework”,此过程必须保证机子联网,如未联网,本人有个法子,就是在项目中新建Entity Framework(如“ADO.NET实体数据模型”)项,然后再删除该项即可。上述命令执行前确保如下图所示说明

此时可以看到项目多了个文件“packages.config”,同样在引用下多了“EntityFramework”的程序集。而在解决方案目录下则多了文件夹“packages”(物理目录,非解决方案目录),假如我们要拷贝项目,则应连同该目录拷贝,否则到别的目录下再编译项目之前仍然重新需要执行“Install-Package EntityFramework”,这是在将解决方案添加到源码管理时需要注意的地方。
3.项目下添加项目文件夹“Models”,并在该文件夹编写以下三个类与一个枚举(EF5对枚举的支持是非常棒的):
enum Gender
PersonName
BaseModel
UserModel
4.在项目下继续新建类“CodeFirstDbContext”
CodeFirstDbContext
5.在“程序包管理控制台”(注意第二步截图中所说的,以下关于NuGet命令均必须如此),输入“Enable-Migrations”回车,项目多了Migrations目录。
6.在解决方案下新建控制台项目“ConsoleUI”,再在该项目下新建文件夹“App_Data”(此步骤非必须,我系统未安装SQL Server,因而我将使用数据库文件,文件则位于当前刚创建的目录下)。
7.在DbContext所在的项目CodeFirst下的App.config下添加如下节点(注意不要添加到configSections节点之前)
<connectionStrings>
<add name="DefautConnection" connectionString="data source=(LocalDB)\v11.0;attachdbfilename=H:\shuju\VS2012\CodeFirst\ConsoleUI\App_Data\CodeFirstDb.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
8.在“程序包管理控制台”输入命令“Enable-Migrations”,保证无错误提示,继续输入“Add-Migration CreateDb”,注意CreateDb可由咱们自行定义。
此时VS生成了一个名字很长的cs文件,可以看到其为咱们创建数据表的代码,EF对枚举、复杂类型、实体继承都提供了非常棒的知识,我们此时可以修改相应代码以生成我们希望看到的表结构。

9.编写控制台程序以验证我们的程序(注意添加引用并添加app.config添加数据连接字符串)。
10.收工。
完成之后就感觉很容易,由于我之前机子未联网而在做demo时颇费周折。在来看看我们用到的NuGet命令:
Install-Package EntityFramework
Enable-Migrations
Add-Migration
Update-Database
Entity Framework 之 Code First的更多相关文章
- 【极力分享】[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例【转载自https://segmentfault.com/a/1190000004152660】
[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例 本文我们来学习一下在Entity Framework中使用Cont ...
- Entity Framework 6 Code First新特性:支持存储过程
Entity Framework 6提供支持存储过程的新特性,本文具体演示Entity Framework 6 Code First的存储过程操作. Code First的插入/修改/删除存储过程 默 ...
- 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表
创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添 ...
- AppBox升级进行时 - 拥抱Entity Framework的Code First开发模式
AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. 从Subsonic到Entity Framework Subsonic最早发布 ...
- MVC2、MVC3、MVC4、MVC5之间的区别 以及Entity Framework 6 Code First using MVC 5官方介绍教程
现在MVC的技术日趋成熟,面对着不同版本的MVC大家不免有所迷惑 -- 它们之间有什么不同呢?下面我把我搜集的信息汇总一下,以便大家能更好的认识不同版本MVC的功能,也便于自己查阅. View Eng ...
- 在Entity Framework 中用 Code First 创建新的数据库
在Entity Framework 中用 Code First 创建新的数据库 (原文链接) 本文将逐步介绍怎样用Code First 创建新数据库,使用在代码中定义类和API中提供的特性(Attri ...
- Entity Framework Core Code First 项目实践
Entity Framework Core Code First 实践 任何一种技术的出现都是为了解决一系列特定的问题,只有了解了技术所要解决的关键问题,才能理解它的真正用途,之后,才能在实践中用好它 ...
- Entity Framework 6 Code First的简单使用和更新数据库结构
一.安装Entity Framework 6 在项目中右击选择“管理NuGet程序包",联机搜索Entity Framework,点击安装 二.配置数据库连接 在App.config中加入数 ...
- 使用NuGet助您玩转代码生成数据————Entity Framework 之 Code First
[前言] 如果是Code First老鸟或者对Entity Framework不感兴趣,就不用浪费时间往下看了. 记得09年第一次接触ORM————Linq2Sql,从此对她的爱便一发不可收拾,一年后 ...
随机推荐
- 常用批处理命令总结3之Find和FindStr
原文:常用批处理命令总结3之Find和FindStr find 作用:从文件中收索字符串 格式:find 参数 "字符串" 路径\文件名 参数: /V 显示所有未包含指定字符串的行 ...
- 专访雷水果国:离1.5K至18K 一个程序猿5每年的成长之路
我只是一个小菜鸟,对于自主学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识.小菜鸟创建了一个群.希望光临本博客的人能够进来交流. 寻 ...
- Ionic项目中使用极光推送-android
对于Ionic项目中使用消息推送服务,Ionic官方提供了ngCordova项目,这个里面的提供了用angularjs封装好的消息推送服务(官方文档),使用的是GitHub上的 PushPlugin ...
- SQL点滴28—一个简单的存储过程
原文:SQL点滴28-一个简单的存储过程 在表中写入一条数据同事要向另外一个表中写入信息,所以会使用到事务.实际使用的时候还会一次向一个表中吸入多条数据,下面的存储过程,将字符串拆分成数组然后写入到表 ...
- SQL点滴27—性能分析之执行计划
原文:SQL点滴27-性能分析之执行计划 一直想找一些关于SQL语句性能调试的权威参考,但是有参考未必就能够做好调试的工作.我深信实践中得到的经验是最珍贵的,书本知识只是一个引导.本篇来源于<I ...
- 大约php,mysql,html数字寻呼和文本分页2分页样式供大家参考
做盗版.转载请添加源http://blog.csdn.net/yanlintao1 请勿盗版,转载请加上出处http://blog.csdn.net/yanlintao1 首先进行样式展示希望对大家有 ...
- MVC 分页1 标准的url分页
一. 将mvcpager ddl 引用到web服务项目中. 二. 在view加入 <%@ Import Namespace="Webdiyer.WebControls.Mvc" ...
- C# 文件下载类
using System; using System.Net; using System.IO; using System.Text; using System.Web; using System.W ...
- CSS移动
#hand { width: 170px; height: 236px; position: absolute; top: 178px; left: 390px; background: url('h ...
- ventBroker简单实现
C#编程实践—EventBroker简单实现 前言 话说EventBroker这玩意已经不是什么新鲜货了,记得第一次接触这玩意是在进第二家公司的时候,公司产品基础架构层中集成了分布式消息中间件,在.n ...