码迷,mamicode.com
首页 > 数据库 > 详细

将EF Code First 应用于已经存在的数据库

时间:2016-10-25 19:30:49      阅读:585      评论:0      收藏:0      [点我收藏+]

标签:wpa   scn   wps   gsl   lrm   fail   sdi   pmu   mpi   

  Entity Framework v6.1 开始原生支持将Code First 应用于一个已经存在的数据库。下面以一个demo来讲解如何把Code First 应用于已经存在的数据库以及如何使用Code First 迁移来更新数据库。

1.把Code First应用于已经存在的数据库

  首先,创建数据库CodeFirstFromExistingDB,接着创建两个表Categories 和 Products ,表结构如下:

Categories
技术分享

Products

技术分享

然后插入测试数据:

技术分享    技术分享

接着,创建一个MVC项目并且从数据库生成Code First 数据模型:

1.创建一个名为CodeFirstExistingDB的web应用 ,并且设置身份验证为个人用户账户
技术分享

web应用创建完成后,右击项目目录,选择添加-新建项-数据-ADO.NET实体数据模型,设置名称为:StoreContext
技术分享

点击添加,在向导页选择来自数据库的Code First

技术分享

点击下一步,在选择连接界面点击新建连接,

技术分享

在连接属性页面,设置数据库信息:

技术分享

点击下一步,选择数据库对象(表),并且勾选确定所生成对象名称的单复数形式复选框

技术分享

 

ADO.NET实体数据模型创建完成后,会在项目根目录创建Product、Category以及StoreContext三个类。

接着添加控制器和视图来展示数据:

生成项目,然后右击Controller文件夹,选择添加-控制器,选择包含视图的MVC5控制器(使用Entity Framework),控制器设置如下:

技术分享

创建完成后,右击视图文件件下Products文件夹下的index.cshtml,在浏览器中查看,可以看到数据展示到页面上。

2.使用Code First 迁移更新数据库

  Code First 迁移,可以把你在代码中对模型的修改更新到数据库,要使用Code First 迁移,首先需要打开它:

在包管理器控制台输入:Enable-Migrations -ContextTypeName CodeFirstExistingDB.StoreContext ,回车。(注意,需要制定需要使用的上下文(context)因为在创建项目时自动创建了身份验证的上下文)。执行完成之后会创建Migrations 文件夹,里面包含一个Configuration.cs 类。

  此时,要使Code First工作还需要一个额外的步骤,如果现在创建一个迁移,它会尝试把上下文里包含的说有实体添加到数据库,由于Products和categories 表已经存在于数据库中,所以迁移会失败。所以首先需要创建一个初始化为空的迁移,然后我们就可以对任何修改添加迁移了。

  在包管理器控制台输入:Add-Migration InitialCreate -IgnoreChanges 以创建一个空的迁移。

IgnoreChanges 标识用于确保这次迁移不会做任何事。执行它会在数据库中创建migrations 表,migrations 表是一个对数据库迁移之前的快照。

  接着,在包管理器控制台输入:update-database 用于把初始化迁移更新到数据库。

  迁移初始化完成后,来使用Code First 迁移 更新数据库:

  在Product表中添加Description 列,并且设置长度为50,([StringLength(50)] );现在添加一个新的迁移来把修改更新到数据库。

包管理器控制台输入:Add-Migration add_product_description ,执行后Migrations 文件夹会增加一个文件,用来描述这次迁移。接着,在包管理器控制台输入:

update-database , 新的列就会被增加到Products表中。

技术分享

将EF Code First 应用于已经存在的数据库

标签:wpa   scn   wps   gsl   lrm   fail   sdi   pmu   mpi   

原文地址:http://www.cnblogs.com/Saints/p/5997260.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!