[efcore]数据迁移

     2022-10-05     802

关键词:

摘要

在实际项目中,大多都需要对业务逻辑以及操作数据库的逻辑进行分成操作,这个时候该如何进行数据的迁移呢?

步骤

上篇文章:EF Core数据迁移操作

比如,我们将数据上下文放在了Data层。

看一下BlogContext内容如下:

 public class BlogContext : DbContext
    {

        public BlogContext(DbContextOptions options) : base(options)
        {
        }
        public DbSet<User> Users { set; get; }
      
    }

在appsetting中配置连接字符串

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;database=MyBlogDb;uid=root;pwd=abcd;"
  },
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  }
}

在StartUp启动类中,做如下操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Wolfy.Blog.Data;

namespace Wolfy.Blog
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;

        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
string connStr = Configuration.GetConnectionString("DefaultConnection"); services.AddDbContext
<BlogContext>(options => options.UseMySQL(connStr, opt => opt.MigrationsAssembly("Wolfy.Blog"))); services.AddMvc(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } } }

可以看到上面可以指定迁移程序集

  //
        // 摘要:
        //     Configures the assembly where migrations are maintained for this context.
        //
        // 参数:
        //   assemblyName:
        //     The name of the assembly.
        //
        // 返回结果:
        //     The same builder instance so that multiple calls can be chained.
        public virtual TBuilder MigrationsAssembly([CanBeNullAttribute] string assemblyName);

大概意思是配置数据迁移保持的程序集。

总结

一个简单的用法,遇到了,就记录一下,希望对你有所帮助

efcore数据库迁移(migration)

工具与环境介绍1.开发环境为vs20152.mysqlEFCore支持采用 Pomelo.EntityFrameworkCore.MySql  源代码地址(https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql)场景设计两张表用户表(user)和发帖表(user)一个用户对应多个用户... 查看详情

EFCore 运行单一迁移

...singlemigration【发布时间】:2022-01-0319:57:31【问题描述】:数据库中的迁移表不存在,因此我正在尝试运行1个尚未运行的特定迁移。我尝试使用-target和-migration标志,但它们似乎不存在。我现在正在尝试使用-SourceMigration标志,但... 查看详情

efcore小技巧:迁移已经应用到数据库,如何进行迁移回退操作?(代码片段)

...,并且已经执行 dotnetefdatabaseupdate 将新迁移应用到数据库。此时,因为实体修改,我们希望删除 TeachingPlan 迁移然后创建新的 TeachingPlan 迁移&#x 查看详情

efcore迁移

...删除A,将快照恢复成B,结束-----------------Update-Database1、数据库__EFMigrationsHistory中MigrationId字段和迁移文件做对比2、更新所有新于MigrationId字段的迁移3、更新后的迁移不可Remove4、如果要Remove已经更新的数据库操作,可以使用Update... 查看详情

efcore高级saas系统下单dbcontext如何支持不同数据库的迁移

...e基于表字段的多租户模式已经非常完美了,但是基于数据库的多租户也是可以用的,但是也存在缺点,缺点就是没有办法支持不同数据库,migrationsupportmultidatabaseproviderwithsingledbcontex 查看详情

efcore迁移命令移除外键(代码片段)

 继承MigrationsModelDiffer,重载GetDifferences并移除ForeignKeys[System.Diagnostics.CodeAnalysis.SuppressMessage("Usage","EF1001:InternalEFCoreAPIusage.",Justification="<挂起>")]publicclassMigrationsM 查看详情

EFCore 无法识别数据库提供程序

】EFCore无法识别数据库提供程序【英文标题】:EFCoreNotrecognizingDatabaseProvider【发布时间】:2017-10-2812:24:52【问题描述】:我有一个.NetCoreWebApplication项目,其中上下文类位于类库中。如果我在OnConfiguring(DbContextOptionsBuilderoptionsBuilde... 查看详情

efcore之项目升级遇到迁移小问题

...息看得我一脸懵逼。首先这个项目启动后会使用EFCore进行数据库迁移,并且初始化后会插入一些基础数据,然后在插入数据的时候,这个表的某个列应该是text类型的,可是迁移后数据库中该列是int类型。这个时候... 查看详情

从 EF Core 5 迁移到 EF Core 6 时出错

...22-01-1507:19:18【问题描述】:从EFCore5迁移到EFCore6后,我的数据库模型出现问题。在创建上下文时出现错误:字典中不存在给定的键。示例应用程序仓库:https://github.com/testApp6/TestApp有什么想法有什么问题或我该如何解决?【问题... 查看详情

数据库更新后是不是可以删除 EF Core 数据库迁移

】数据库更新后是不是可以删除EFCore数据库迁移【英文标题】:IsitpossibletoremoveanEFCoreDatabasemigrationafterthedatabaseisupdatedwiththesame数据库更新后是否可以删除EFCore数据库迁移【发布时间】:2021-09-1618:25:14【问题描述】:在.NETEF核心中... 查看详情

我可以使用 EF Core 5 InMemory 数据库进行集成测试吗

】我可以使用EFCore5InMemory数据库进行集成测试吗【英文标题】:CanIUseEFCore5InMemoryDatabaseForIntegrationTesting【发布时间】:2021-12-1710:27:20【问题描述】:我正在从netcore3.1迁移到net5(EFCore3也迁移到EFCore5)。我们正在使用EFCore3InMemory... 查看详情

.NET 6 使用 EF CORE 进行迁移

】.NET6使用EFCORE进行迁移【英文标题】:.NET6usesEFCOREtomigrate【发布时间】:2021-12-2911:18:35【问题描述】:我已将.NET版本升级到最新的6.0,但无法使用EFCore进行迁移。版本的变化让我感觉很陌生,资料也比较少。您拥有的任何信息... 查看详情

将 EF Core 迁移添加到现有数据库,同时仍允许从头开始创建数据库

】将EFCore迁移添加到现有数据库,同时仍允许从头开始创建数据库【英文标题】:AddingEFCoreMigrationstoanexistingdatabase,whilestillenablingcreationofthedatabasefromscratch【发布时间】:2021-12-2917:00:53【问题描述】:去年,我用.NetCore和EFCore重写... 查看详情

EF Core 3.1 在特定数据库上下文上添加迁移

】EFCore3.1在特定数据库上下文上添加迁移【英文标题】:EFCore3.1AddMigrationonspecificDBContext【发布时间】:2020-10-0500:26:09【问题描述】:我的WebAPI项目中有2个EFCoreDBContext。一个是OracleContext-Oracle.EntityFrameworkCore(2.19.70)。OracleContext是... 查看详情

.net下极限生产力之efcore分表分库全自动化迁移codefirst(代码片段)

...了如何兼容WTM框架后也有不少小伙伴来问我如何兼容如何迁移等问题,经过这么多框架的兼容我自己也认识到了一些问题,譬如在ShardingCore初始化前使用(毕竟efcore)的初始化是在依赖注入的时候不需要手动调用初始化&# 查看详情

efcore迁移过程遇到efcoretoolsversion版本不相符的解决方案(代码片段)

如果你使用命令:PM>add-migrationInital提示如下信息时:TheEFCoretoolsversion‘2.1.1-rtm-30846‘isolderthanthatoftheruntime‘2.1.4-rtm-31024‘解决方法大致一下几种:第一最近在跟着官方的文档学习.NETCore。在写“创建Razor页面Web应用”Demo... 查看详情

无法使用 Ef Core 删除数据库迁移

】无法使用EfCore删除数据库迁移【英文标题】:Can\'tremoveDatabaseMigrationwithEfCore【发布时间】:2020-07-0921:52:10【问题描述】:好吧,我正在尝试恢复数据库迁移,只需添加一列,请参阅:publicpartialclassCreateColumnTypeCamera:Migrationprotect... 查看详情

.net下极限生产力之efcore分表分库全自动化迁移codefirst

.Net下极限生产力之分表分库全自动化MigrationsCode-First##介绍本文ShardinfCore版本x.6.x.x+本期主角:-[`ShardingCore`](https://github.com/dotnetcore/sharding-core)一款ef-cor 查看详情