使用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的更多相关文章

  1. 【极力分享】[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例【转载自https://segmentfault.com/a/1190000004152660】

      [C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例 本文我们来学习一下在Entity Framework中使用Cont ...

  2. Entity Framework 6 Code First新特性:支持存储过程

    Entity Framework 6提供支持存储过程的新特性,本文具体演示Entity Framework 6 Code First的存储过程操作. Code First的插入/修改/删除存储过程 默 ...

  3. 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表

    创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添 ...

  4. AppBox升级进行时 - 拥抱Entity Framework的Code First开发模式

    AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. 从Subsonic到Entity Framework Subsonic最早发布 ...

  5. MVC2、MVC3、MVC4、MVC5之间的区别 以及Entity Framework 6 Code First using MVC 5官方介绍教程

    现在MVC的技术日趋成熟,面对着不同版本的MVC大家不免有所迷惑 -- 它们之间有什么不同呢?下面我把我搜集的信息汇总一下,以便大家能更好的认识不同版本MVC的功能,也便于自己查阅. View Eng ...

  6. 在Entity Framework 中用 Code First 创建新的数据库

    在Entity Framework 中用 Code First 创建新的数据库 (原文链接) 本文将逐步介绍怎样用Code First 创建新数据库,使用在代码中定义类和API中提供的特性(Attri ...

  7. Entity Framework Core Code First 项目实践

    Entity Framework Core Code First 实践 任何一种技术的出现都是为了解决一系列特定的问题,只有了解了技术所要解决的关键问题,才能理解它的真正用途,之后,才能在实践中用好它 ...

  8. Entity Framework 6 Code First的简单使用和更新数据库结构

    一.安装Entity Framework 6 在项目中右击选择“管理NuGet程序包",联机搜索Entity Framework,点击安装 二.配置数据库连接 在App.config中加入数 ...

  9. 使用NuGet助您玩转代码生成数据————Entity Framework 之 Code First

    [前言] 如果是Code First老鸟或者对Entity Framework不感兴趣,就不用浪费时间往下看了. 记得09年第一次接触ORM————Linq2Sql,从此对她的爱便一发不可收拾,一年后 ...

随机推荐

  1. 通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 ‘incorrect string value: '\xF0...

    原文:[原创]通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 'incorrect string value: '\xF0... 这篇blog重点在解决问题,如果你对 ...

  2. datatables表格

    datatables表格 并不是所有的后台开发都有美工和前端工程师来配合做页面,为了显示数据并有一定的美感,jQuery的DataTables插件对于像我这样的前端菜鸟来说真是雪中送炭,当然对于专业的 ...

  3. 移动小bug

    1. 在三星note2,小米2,页面加载后,页面有黑块. 那么提高被盖住的部分z-index. 2. iphone5 ,ios7.0.4,上文字显示不出 那么就先hide,setTimeout几百毫秒 ...

  4. JavaScript中的单引号和双引号报错的解决方法

    在使用JavaScript显示消息或者传递字符数据的时候,经常会碰到数据中夹杂单引号(')或者双引号("),这种语句往往会造成JavaScript报错.对此一般采用/'或者/"的解 ...

  5. PHP程序猿必备的七种武器

    作为一个程序猿(又或者是程序媛),出来闯荡江湖,没有几种必杀技在手,那是肯定无法赢得江湖名声的,除了必杀技之外,武器也是很重要的,但是一把青钢剑,肯定是无法赢得万千少男少女的欢心的.就连小李飞刀,人家 ...

  6. Inno Setup 网页显示插件 webctrl

    原文:Inno Setup 网页显示插件 webctrl ; -- Example.iss -- ; restools ; http://restools.hanzify.org ; 插件名:webc ...

  7. lucene简介 创建索引和搜索初步

    lucene简介 创建索引和搜索初步 一.什么是Lucene? Lucene最初是由Doug Cutting开发的,2000年3月,发布第一个版本,是一个全文检索引擎的架构,提供了完整的查询引擎和索引 ...

  8. ADFS 2.0 配置简介 PartⅢ – 声明规则语言

    上一篇我们最终把 ADFS 与应用之间的信任关系建立起来了,但是应用接收到的声明信息只有默认的两个,这次我们就来学学怎么配置声明. 一.声明存储配置 ADFS 目前默认支持三种方式的声明值存储,另外还 ...

  9. PHP类

    类就是很多方法的集合这些方法是你在程序中经常会用到的一些逻辑或算法将他们包进类里面,可以提升程序的效率,减少代码的重复 比如你有一个类文件 web_common.class.php ,里面有一个类,名 ...

  10. 使用ServletConfig获得web.xml资源中的参数

    适用:一些不需要再Servlet文件中初始化的可以使用,例如:数据库用户名和密码 //Servlet文件 //实例化ServletConfig对象  ServletConfig servletConf ...