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

[.net]EF中重建数据库

原创
作者头像
东风压倒西风
发布2022-12-08 11:35:09
4800
发布2022-12-08 11:35:09
举报
文章被收录于专栏:卓谷山

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

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

背景说明

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

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

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

Migrations/{timestamp}_InitialCreate.cs

该文件的内容如下:

代码语言:c
复制
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
复制
Update-Database

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

问题

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

执行如下命令,报错了。

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

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

解决方法

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

代码语言:text
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景说明
  • 问题
  • 解决方法
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档