CodeFirst数据迁移

1.DBContext的代码如下:

 1 public class Context:DbContext
 2     {
 3         public Context()
 4             : base("name=ConnStr")
 5         {
 6
 7         }
 8
 9         public DbSet<Menu> Menus { get; set; }
10     }

2.Menu类如下:

 1 [Table("Menu")]
 2     public class Menu
 3     {
 4         [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
 5         public int ID { get; set; }
 6         [Required]
 7         public int PID { get; set; }
 8         [Required]
 9         public string Name { get; set; }
10         [Required]
11         public string Url { get; set; }
12     }

Ctrl+F5运行没有问题。

3.修改Menu类,改成如下:

[Table("Menu")]
    public class Menu
    {
        [Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int ID { get; set; }
        [Required]
        public int PID { get; set; }
        [Required]
        public string Name { get; set; }
        [Required]
        public string Url { get; set; }
        public string Test { get; set; }
    }

再次运行,发现此时报错

报错的原因是因为数据库的结构已经改变,此时有两种方法可以解决该问题。

1.设置每次数据库结构改变之后都删除原先的数据库再重建

只需要加上下面的代码:

 public Context()
            : base("name=ConnStr")
        {
            Database.SetInitializer(new DropCreateDatabaseIfModelChanges<Context>());
            this.Database.Initialize(true);
        }

这样设置之后再次运行没有问题,但是由于数据库被删掉了再重建的,所以原先的数据都没有了。要想保留原先的数据可以使用Migration数据迁移的方式

2.数据迁移

1)点击工具选项卡,选择程序包管理控制台

2)输入命令Enable-Migrations,此时在项目下会新建一个Migrations文件夹,里面包括一个Configuration.cs文件

3)输入命令Add-Migration XXXX,此时会在Migrations文件夹下新建一个yyyyMMddHHmmss_XXXX.cs文件,里面包括一个Down和UP方法,分表表示此次数据迁移回滚和升级的方法

4)输入命令Update-Database-Verbose,数据迁移完成,可以看到数据迁移的SQL语句。

时间: 2024-10-05 04:31:15

CodeFirst数据迁移的相关文章

【EF】EF Code-First数据迁移

Code-First数据迁移  首先要通过NuGet将EF升级至最新版本. 新建MVC 4项目MvcMigrationDemo 添加数据模型 Person 和 Department,定义如下: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.ComponentModel.DataAnnotations; 6 using Syste

EF Code-First数据迁移

Code-First数据迁移  首先要通过NuGet将EF升级至最新版本. 新建MVC 4项目MvcMigrationDemo 添加数据模型 Person 和 Department,定义如下: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.ComponentModel.DataAnnotations; 6 using Syste

ASP.NET MVC 之CodeFirst 数据迁移

CodeFirst模式下如果 一个 类的属性 增加或者删除 那么 与其对应的 就是 数据库中所对应的 字段 增加或者删除 一个属性变化还好 ,我们直接可以到数据库中找到 ,所对应的表中,对其修改,那么 一次对多个类中的属性做修改,如果 手动 来操作是件很头疼的事情 那么数据迁移 很轻松的解决 问题 以下是 我建立的上下文 TestEF 用于测试 用的 班级类 老师类 namespace WebApplication2 { using System; using System.Collection

EF架构~CodeFirst数据迁移与防数据库删除

回到目录 本文介绍两个概念,防数据库自动删除,这是由于在code first模式下,当数据实体发生变化时,会对原来数据库进行删除,并将新数据表添加进来,但这对于我们的运营环境数据库,是万万不能接受的,第二个问题是数据迁移问题,当你有新的实体建立后,如何响应到数据库,这成为一个问题,当然实现也很简单,我们直接使用migrations工具即可. 一 防数据库删除 将你的业务DbInitializer的基类改成CreateDatabaseIfNotExists即可解决这个问题,这是在数据初始化时需要做

EF Code-First数据迁移的尝试

Code-First的方式虽然省去了大量的sql代码,但增加了迁移的操作.尝试如下: 1.首先要在“扩展管理器”里搜索并安装NuGet“库程序包管理器”,否则所有命令都不能识别,会报CommandNotFound之类的错误.如果是离线状态,就下载NuGet.Tools.vsix并安装.这样,工具->库程序包管理器->管理解决方案的NuGet程序包里能自动找到已安装的EF组件. 2.为DAL项目安装EF,联机时可以直接在nuget里选择默认项目,输入install-package EntityF

asp.net core EF CodeFirst数据迁移

在我们用CodeFirst添加表或者表字段时,CodeFirst会在数据库添加一个表来记录表结构更改(通过migration更改).那么迁移时怎么实现的,这里由于装了.net core后,使用"程序包管理控制台"会报错,错误信息如下 那么,现在就要用命令行实现数据库的及时更新. "migrations add"命令告诉迁移框架(migration framework)检查当前的实体模型与当前数据库结构是否匹配,不匹配则创建必要的code来迁移,使实体类和数据库一致.

EF CodeFirst数据迁移与防数据库删除

1 开启migrations功能 enable-migrations -force 2 添加迁移版本 add-migration 名称后缀 我们每次修改实体后,都应该使用这个add-migration来升级历史版本 3 更新数据库 update-database 4生产迁移计划,即SQL语句 Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration:manage 原文地址:https://www.cnb

EF应用CodeFirst模式,数据迁移的基本用法要点摘记

第一次使用EntityFramework做CodeFirst的开发,在做数据迁移时遇到不少问题,花费了一整天的时间学习调整,总算时学会了基本用法和要点.现在整理后贴出来,希望对和我一样的初用者能有一些帮助,少走一些弯路,少花一点时间摸索,都是值得的. 一. 模型设计 1.  遵循EF标准,注意表关系配对 2.  数据模型里尽量把必须的属性和说明都写全 3.  EF默认id字段为主键,如果没有,需指定主键 二. 数据迁移 1.  命令运行环境:visual studio工具栏->工具->NuGe

EF学习之CodeFirst(二)--数据迁移

使用CodeFirst时,如果Model发生改变的话,例如我们给User类里面新加个Sex属性,运行时会出现如下错误: 这时我们需要使用数据迁移来将model的改变同步更新到数据库中. 1.启用数据迁移功能 打开程序包管理控制台:选好要启动数据迁移的默认项目,输入enable-migrations,运行,出现下述情况即迁移成功. 启用数据迁移成功后项目里面会多出一个文件夹,文件夹里包括两个文件): 打开Configuration文件,将构造函数里面的AutomaticMigrationsEnab