首页 > 其他分享 >Migration使用

Migration使用

时间:2023-02-14 00:11:49浏览次数:60  
标签:builder 数据库 Migration 使用 True options 构造函数

Migration

分层项目迁移命令

1.单数据库

# 1、切换到DbContext项目:Infrastructure

# 2、用于Migration需要两个包:
启动项添加包 Microsoft.EntityFrameworkCore.Design 
基础设施项可能需要包 Microsoft.EntityFrameworkCore.Tools
(原因https://blog.csdn.net/sundna/article/details/100544285)

# 3、执行Add-Migration Init -s EFCoreDatabase
(执行Add-Migration Init -s EFCoreDatabase与有没有下面的构造函数毫无关系,构造函数只是为了在别的地方需要new的时候用)
  
# 4、执行Update-database

2.多数据库

# 1、切换到DbContext项目:Infrastructure

# 2、用于Migration需要两个包:
启动项添加包 Microsoft.EntityFrameworkCore.Design 
基础设施项可能需要包 Microsoft.EntityFrameworkCore.Tools
(原因https://blog.csdn.net/sundna/article/details/100544285)

# 3、执行Add-Migration Init -Context MyDbContext2  -s EFCoreDatabase 
(执行Add-Migration Init -s EFCoreDatabase与有没有下面的构造函数毫无关系,构造函数只是为了在别的地方需要new的时候用)
  
# 4、执行Update-database -Context MyDbContext2

使用数据库上下文

1.单数据库

不使用依赖注入

//无参构造函数是默认的
public MyDbContext() 
{
}

protected override void OnConfiguring(DbContextOptionsBuilder builder)
{      builder.UseSqlServer("Server=.;Database=tx2;Trusted_Connection=True;Encrypt=True;TrustServerCertificate=True;");
base.OnConfiguring(builder);
}

using (MyDbContext db = new MyDbContext())
{
} 			

使用依赖注入

protected override void OnConfiguring(DbContextOptionsBuilder builder)
{      builder.UseSqlServer("Server=.;Database=tx2;Trusted_Connection=True;Encrypt=True;TrustServerCertificate=True;");
base.OnConfiguring(builder);
}

builder.Services.AddDbContext<MyDbContext2>();
public MyDbContext2(DbContextOptions options) : base(options) 
{
}

builder.Services.AddDbContext<MyDbContext2>(opt => { opt.UseSqlServer("Server=.;Database=tx2;Trusted_Connection=True;Encrypt=True;TrustServerCertificate=True;");
});


//如果不写MyDbContext2(DbContextOptions options) : base(options) 则会报错原因是:
当您尝试使用 AddDbContext 方法注册没有接受 DbContextOptions<TContext> 参数的构造函数的 DbContext 类型时,会发生此错误。若要修复此错误,需要向接受 DbContextOptions<TContext> 参数的 DbContext 类型添加一个构造函数

2.多数据库

使用依赖注入

public MyDbContext2(DbContextOptions<MyDbContext2> options) : base(options)
{
}

builder.Services.AddDbContext<MyDbContext2>(opt => { opt.UseSqlServer("Server=.;Database=tx2;Trusted_Connection=True;Encrypt=True;TrustServerCertificate=True;");
});

_EFMigratoinsHistory表

每次Update-database的时候都会将最后一个迁移文件的名字20230213125523_Ad及它的Designer文件中[Migration("20230213125523_Ad")](前面两个必需相同)去和__EFMigratoinsHistory表的最后一行的MigrationId值对比,如果值一样就efcore就认为没变化不执行迁移,如果名称不一样则执行迁移。所以最好不要动__EFMigratoinsHistory表的值!

其他参数

# 回滚和删除
https://www.cnblogs.com/shanfeng1000/p/13377957.html

# Script-Migration 
正常来说公司不会让开发人员直接操作已经上线了的数据库,因为不小心就会造成非常大破坏,所以需要使用Script-Migration指定生成某个改动的sql脚本,给公司Dbo管理者审核过再到数据库执行sql脚本。而Update-Database操作其实就是EFCore框架先帮我们Script-Migration 生成sql脚本再执行sql脚本,这让我们不清楚内部的准确变动。

项目多个数据库怎么办?



标签:builder,数据库,Migration,使用,True,options,构造函数
From: https://www.cnblogs.com/long-live/p/m.html

相关文章

  • Worksheet使用方法
    1 下载印象笔记:iPhone/iPad在AppStore搜索“印象笔记”后下载安卓在应用市场或在印象笔记官网yinxiang.com下载,图标同上电脑可至印象笔记官网yinxiang.com下载客户......
  • 调度器43—migration 内核线程
    基于LInux-5.10相关:Linux内核机制—smp_hotplug_thread:https://www.cnblogs.com/hellokitty2/p/17114737.html 一、相关数据结构1.structcpu_stop_donestructcpu......
  • Mongodb基本使用
    MongoDB基本介绍Mongodb是C++语言编写基于分布式文件存储的开源数据库,属于NOSQL。Mongodb是在关系型与非关系型数据之间的产品,是非关系数据库中功能最丰富,最像关系型......
  • 前端发展史 vue介绍 vue的快速使用
    目录前端发展历史vue介绍vue快速使用之helloworld前端发展历史#1HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面->给后端(PHP、Python、Go、Java)->后端......
  • Office 365查看Talent上的站点以及使用率
    前言我们在使用Office365经常会纠结有哪些站点,他们的详细信息,我们该怎么做呢?其实,SharePointOnline的管理中心,就是一个SharePoint站点,在网站内容里有个列表......
  • 前端之Vue框架:1、前端发展历史、Vue介绍和基本使用
    目录前端之Vue框架一、前端发展历史二、Vue的介绍的基本使用1、Vue简介2、Vue特点3、M-V-VM思想4、组件化开发、单页面开发5、版本选择6、引入方式7、补充8、简单使用前......
  • vue基础:前端发展历史、Vue的介绍的基本使用
    目录一、前端发展历史二、Vue的介绍的基本使用1、Vue简介2、Vue特点3、M-V-VM思想4、组件化开发、单页面开发5、版本选择6、引入方式7、补充8、简单使用一、前端发展历史......
  • vue-day01——前端发展历史、vue的介绍及基本使用
    目录前端之Vue框架一、前端发展历史二、Vue的介绍及基本使用1、Vue简介2、Vue特点3、M-V-VM思想4、组件化开发、单页面开发5、版本选择6、引入方式7、补充8、简单使用前......
  • PyTorch中使用GPU加速-cuda
    一、CPU和GPU数据相互转换在torch中以下数据结构分为CPU和GPU两个版本:TensorVariable(包括Parameter)(对tensor的封装)nn.Module(包括常用的layer、lossfunc......
  • 为什么称不坑盒子是wps和word使用者的救世主呢?
    不坑盒子很多朋友在工作过程中需要对Word文档进行编辑处理,如果想让Word排版更有效率可以试试小编带来的这款不坑盒子软件,这是一个非常好用的插件工具,专门应用在Word文档中......