前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >[.net]EF中重建数据库

[.net]EF中重建数据库

原创
作者头像
东风压倒西风
发布于 2022-12-08 03:35:09
发布于 2022-12-08 03:35:09
51000
代码可运行
举报
文章被收录于专栏:卓谷山卓谷山
运行总次数:0
代码可运行

做了一个.net MVC的练习,使用了EF,手动修改了Modal中的数据的类型,需要重新生成数据库

使用下面的方法,虽然不是最好的,权且记录一下。

背景说明

正常情况下,在PMC中执行如下命令

代码语言:text
AI代码解释
复制
Add-Migration InitialCreate

会在项目中生成一个这样的文件,

Migrations/{timestamp}_InitialCreate.cs

该文件的内容如下:

代码语言:c
代码运行次数:0
运行
AI代码解释
复制
using System;
using Microsoft.EntityFrameworkCore.Migrations;

#nullable disable

namespace MvcMovie.Migrations
{
    public partial class InitialCreate : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.CreateTable(
                name: "Movie",
                columns: table => new
                {
                    Id = table.Column<int>(type: "int", nullable: false)
                        .Annotation("SqlServer:Identity", "1, 1"),
                    Title = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    ReleaseDate = table.Column<DateTime>(type: "datetime2", nullable: false),
                    Genre = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    Price = table.Column<decimal>(type: "decimal(18,2)", nullable: false)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_Movie", x => x.Id);
                });
        }

        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropTable(
                name: "Movie");
        }
    }
}

再执行

代码语言:text
AI代码解释
复制
Update-Database

至此,数据库中会实际的表了。

问题

如果将modal中的某个字段的类型修改了,编译的时候会报错,将相关文件修改以后,需要将修改同步到数据库中。

执行如下命令,报错了。

代码语言:text
AI代码解释
复制
Add-Migration InitialCreate
Update-Database

查看Migrations下的MvcMovieContextModelSnapshot文件,发现其中的类型并没有修改。

解决方法

很粗暴的解决方法,将Migrations下的MvcMovieContextModelSnapshot文件和{timestamp}_InitialCreate文件删除。将数据库也删掉。然后执行

代码语言:text
AI代码解释
复制
Add-Migration InitialCreate
Update-Database

就好了。

显然这个方法是有问题的。下面这个文章写得貌似比较清楚。可参考。

https://zhuanlan.zhihu.com/p/196761386

另外,练习项目是参考的https://learn.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/adding-model?view=aspnetcore-7.0&tabs=visual-studio


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ASP.NET MVC 5 - 给电影表和模型添加新字段
在本节中,您将使用Entity Framework Code First来实现模型类上的操作。从而使得这些操作和变更,可以应用到数据库中。 默认情况下,就像您在之前的教程中所作的那样,使用 Entity Framework Code First自动创建一个数据库,Code First为数据库所添加的表,将帮助您跟踪数据库是否和从它生成的模型类是同步的。如果他们不是同步的,Entity Framework将抛出一个错误。这非常方便的在开发时就可以发现错误,否则您可能会在运行时才发现这个问题。 为对象模型的变更
葡萄城控件
2018/01/10
2.4K0
ASP.NET MVC 5 - 给电影表和模型添加新字段
Asp.Net MVC4入门指南(7):给电影表和模型添加新字段
在本节中,您将使用Entity Framework Code First来实现模型类上的操作。从而使得这些操作和变更,可以应用到数据库中。 默认情况下,就像您在之前的教程中所作的那样,使用 Entity Framework Code First自动创建一个数据库,Code First为数据库所添加的表,将帮助您跟踪数据库是否和从它生成的模型类是同步的。如果他们不是同步的,Entity Framework将抛出一个错误。这非常方便的在开发时就可以发现错误,否则您可能会在运行时才发现这个问题。 (由一个晦涩的错
葡萄城控件
2018/01/10
2K0
Asp.Net MVC4入门指南(7):给电影表和模型添加新字段
使用CodeFirst创建并更新数据库
在使用Entity Framwork的三种方式(ModelFist、DBFirst、CodeFirst)中,CodeFirst方式书写的代码最为干净。
雪飞鸿
2018/09/05
2.7K0
使用CodeFirst创建并更新数据库
从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置
Github源码地址:https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-template-from-scratch 前三部分弄完,我们已经可以对内存数据进行CRUD的基本操作,并且可以在asp.net core 2中集成Nlog了。 下面继续: Entity Framework Core 2.0 Entity Framework 是ORM(Object-Relational-Mapping)。ORM是一种让你可以使用面向
solenovex
2018/03/01
2.3K0
从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置
了解EF CodeFirst的Migrator功能与Migrator.Net对比
在上一篇【数据库迁移利器:Migrator.Net】中,很多朋友提到了EF的CodeFirst也有数据库的迁移功能,说来真惭愧,玩了那么多年,至今还未去了解EF,今天来了解下CodeFirst然后与Migrator.Net进行下横向对比。 CodeFirst是EF提供的一种技术手段,使我们从以往的创建数据库后再创建模型变成了只需要关注代码方式进行创模,然后通过EF框架映射到数据库架构并生成。 CodeFirst除了创建新数据库之外,还提供了相应的迁移工具,通过升级和回滚操作相应的更新我们的数据库架构。这些方
脑洞的蜂蜜
2018/02/02
9820
了解EF CodeFirst的Migrator功能与Migrator.Net对比
Entity Framework Core 之数据库迁移
前言 最近打算用.NET Core写一份开源的简易CMS系统,来练练手 所以又去深入研究了一下Entity Framework Core  发现其实有些细节园子里还是很少讲到. 特意整理了几个细节. 正文 1.数据库迁移 先了解一下什么是"数据库迁移",它提供了一种方法,可以逐步将Code First的实体架构更改应用于数据库,以保持数据库与EF Core模型同步,同时保留数据库中的现有数据。 EF Core的数据迁移相对EF6来说改了不少也简化了一些.所以我们现在就来看看如何进行数据迁移 我们以官方代码来
GuZhenYin
2018/03/30
1.1K0
Entity Framework Core 之数据库迁移
Asp.Net MVC4入门指南(8):给数据模型添加校验器
在本节中将会给Movie模型添加验证逻辑。并且确保这些验证规则在用户创建或编辑电影时被执行。 保持事情 DRY ASP.NET MVC 的核心设计信条之一是DRY: "不要重复自己(Don’t Repeat Yourself)"。ASP.NET MVC鼓励您指定功能或者行为,只做一次,然后将它应用到应用程序的各个地方。这可以减少您需要编写的代码量,并减少代码出错率,易于代码维护。 给ASP.NET MVC 和 Entity Framework Code First 提供验证支持是 DRY 信条的一次伟大实践
葡萄城控件
2018/01/10
4.7K0
Asp.Net MVC4入门指南(8):给数据模型添加校验器
ASP.NET MVC 5 - 给数据模型添加校验器
在本节中将会给Movie模型添加验证逻辑。并且确保这些验证规则在用户创建或编辑电影时被执行。 拒绝重复 DRY ASP.NET MVC 的核心设计信条之一是DRY: "不要重复自己(DRY --Don’t Repeat Yourself)"。ASP.NET MVC鼓励您指定功能或者行为,只做一次,然后将它应用到应用程序的各个地方。这可以减少您需要编写的代码量,并减少代码出错率,易于代码维护。 给ASP.NET MVC 和 Entity Framework Code First 提供验证支持是 DRY 信条的
葡萄城控件
2018/01/10
9.1K0
ASP.NET MVC 5 - 给数据模型添加校验器
Asp.Net Core 轻松学-使用MariaDB/MySql/PostgreSQL和支持多个上下文对象
== 注意:这里的创建数据库命令和上面创建 MariaDB/MySql 的命令有一点小小的不同 ==
梁规晓
2019/04/11
2.4K0
Asp.Net Core 轻松学-使用MariaDB/MySql/PostgreSQL和支持多个上下文对象
Entity Framework CodeFirst数据迁移
我们知道无论是“Database First”还是“Model First”当模型发生改变了都可以通过Visual Studio设计视图进行更新,那么对于Code First如何更新已有的模型呢?今天我们简单介绍一下Entity Framework的数据迁移功能。
aehyok
2018/09/11
8730
Entity Framework  CodeFirst数据迁移
CSharpEntityFramework与CodeFirst实践
当我们进行开发的时候,常常会用到数据库来对数据进行持久化的操作,有的时候,我们并不想要在进行代码开发的过程中,还去关注数据库的构建,表的构建等等。于是,就有了Code First模式。何为Code First模式呢?它思想就是先定义模型中的类,再通过这些类生成数据库。这种开发模式适合于全新的项目,它使得我们可以以代码为核心进行设计而不是先构造数据库。这样一来,使得我们更加关注代码的开发。在c#中,我们使用EntityFramework来实现Code First场景。
w4ngzhen
2023/10/16
2940
CSharpEntityFramework与CodeFirst实践
Mysql 该如何 Entity Framework 数据库迁移 和 如何更好的支持EF.Extended
问题 1.在使用EntityFramework访问Mysql的时候,使用迁移来生成数据库或者更新数据库时候会遇到一些问题 2.EntityFramework.Extended对Mysql的支持不是很完全,其中修改是无法直接使用的需要做一些处理 3.EntityFramework.Extended如何跟EntityFramework其他的操作在一个事物里面(针对网友zengfanlin 问题) 解决方案 1.首先解决第一个问题 准备条件:用Nuget下载Mysql.Data.Entity(可以将依赖连同下载)
逸鹏
2018/04/11
1.7K0
Mysql 该如何 Entity Framework 数据库迁移 和 如何更好的支持EF.Extended
Entity Framework4.3 Code-First基于代码的数据迁移讲解1.建立一个最初的模型和数据库   2.启动Migration(数据迁移)3.第一个数据迁移4.订制的数据迁移4.动态
前段时间一直在研究Entity Framework4,但是苦于没有找到我特别中意的教程,要么就是千篇一律的文章,而且写的特别简单,可以说,糟践了微软这么牛埃克斯的东西,要么就是写的东一句西一句,估计是学习的过程中做的笔记就直接公布了,只有本人能看懂,昨天,在MSDN Blog找到一些英文文章,真的感觉老外研究东西没有咱们国内一些人那样浮躁,我倒不是崇洋媚外,但是看他们的文章确实让人感觉进步很快(包括英语,我英语和我俄罗斯语水平差不多吧),这篇文章就简单基于一篇关于Code-Based的数据迁移的英文讲解,加
小白哥哥
2018/03/07
1K0
Entity Framework4.3 Code-First基于代码的数据迁移讲解1.建立一个最初的模型和数据库   2.启动Migration(数据迁移)3.第一个数据迁移4.订制的数据迁移4.动态
ASP.Net Core的Code Fist代码先行操作方法
Asp.Net  core的Code Fist(代码先行)主要有以下几步: 1.创建实体类 2.创建数据库上下文 3.填加连接字符串 4.依赖注入 5.添加基架工具并执行初始迁移 6搭建模型的基本架构(更具模型生成网页Page) 首先需要在创建出实体类,此处以微软官方文档中的Movice实体类为例。 右键单击“Models”文件夹。 选择“添加” > “类”。 将类命名为“Movie”,并添加以下属性: using System; namespace RazorPagesMovie.Models {
码农阿宇
2018/04/18
8840
ASP.Net Core的Code Fist代码先行操作方法
.NET EF Core(Entity Framework Core)
1、Entity Framework Core(EF Core)是微软官方的ORM框架。优点:功能强大、官方支持、生产效率高、力求屏蔽底层数据库差异;缺点:复杂、上手门槛高、不熟悉EFCore的话可能会进坑。 2、Dapper。优点:简单,N分钟即可上手,行为可预期性强;缺点:生产效率低,需要处理底层数据库差异。 3、EF Core是 模型驱动 (Model-Driven)的开发思想,Dapper是 数据库驱动(DataBase-Driven)的开发思想的。没有优劣,只有比较。 4、性能: Dapper等≠性能高;EF Core≠性能差。 5、EF Core是官方推荐、推进的框架,尽量屏蔽底层数据库差异,.NET开发者必须熟悉,根据的项目情况再决定用哪个。
鱼找水需要时间
2024/03/23
5710
.NET EF Core(Entity Framework Core)
C# 数据操作系列 - 5. EF Core 入门
上一章简单介绍了一下ORM框架,并手写了一个类似ORM的工具类。这一章将介绍一个在C#世界里大名鼎鼎的ORM框架——Entity Framework的Core版。
程序员小高
2020/05/14
2.7K0
Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库
    在 .Net Core 2.2中 Microsoft.AspNetCore.App 默认内置了EntityFramework Core 包,所以在使用过程中,我们无需再从 NuGet 仓库单独应用 EFCore 包;本文并不打算深入的介绍 EFCore 的各种使用方式、原理解析,本文重点在于解决让初学者在10分钟内快速使用上 EFCore 的问题。
梁规晓
2019/04/11
1.8K0
Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库
Entity Framework Core 总结
dotnet ef migrations add InitialCreate 创建描述表结构的代码文件
yiyun
2022/04/01
1.2K0
Entity Framework Core 总结
ASP.NET MVC5+EF6+EasyUI 后台管理系统(29)-T4模版
本节不再适合本系统,在58,59节已经重构。请超过本节 这讲适合所有的MVC程序 很荣幸,我们的系统有了体验的地址了。演示地址 之前我们发布了一个简单的代码生成器,其原理就是读取数据库的表结构,生成文本的一个方式来生成代码! 为了替代重复的劳动,微软自己有一套T4模版,我不想把T4模版说得那么的复杂,因为这个复杂我自己也不知道。 原理跟市面的代码生成器一个道理,但是T4的扩展比代码生成器更灵活,可以更方便根据类生成代码等操作。 T4代码模式是没有颜色高亮了,但是我们的VS支持插件 T4 Editor 下载
用户1149182
2018/01/16
1.3K0
ASP.NET MVC5+EF6+EasyUI 后台管理系统(29)-T4模版
【ASP.NET Core 基础知识】--数据库连接--数据迁移和代码优先开发
数据迁移是指将数据从一个存储系统、数据格式、应用程序或硬件平台转移到另一个的过程。这个过程可以涉及数据的转换、清洗和验证,以确保数据的完整性和一致性。一般用于如下情况:
喵叔
2024/05/24
2580
推荐阅读
相关推荐
ASP.NET MVC 5 - 给电影表和模型添加新字段
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文