文章目录
EntityFramework6.4.4 一个项目中多个Context的初始化与迁移
环境
- EF:6.4.4
- 控制台:.net4
- 类库:.net4
需求
在一个model项目中有两个DbConext,因为有Master库和Data库,为了结构紧凑,需要将两个DbConetxt放到统一项目中,进行初始化和迁移。
结构
如图
实现的命令
初始化Master DbContext
Enable-Migrations -ContextTypeName Erp.EF.ErpMasterDbContext -MigrationsDirectory Migrations\Master
初始化Data DbContext
Enable-Migrations -ContextTypeName Erp.EF.ErpDataDbContext -MigrationsDirectory Migrations\Data
迁移Master
add-migration init -ConfigurationTypeName Erp.EF.Migrations.Master.Configuration
迁移Data
add-migration init -ConfigurationTypeName Erp.EF.Migrations.Data.Configuration
扩展知识
Enable-Migrations命令及参数介绍
Enable-Migrations
-ContextTypeName EmployeeDBContext #context类型
-MigrationsDirectory CreateMigrations #自定义数据迁移文件夹
-ProjectName 1-3EntityFrameWorkDemo #数据迁移类将被添加到哪个项目中
-StartUpProjectName 1-3EntityFrameWorkDemo #数据库连接字符串配置文件 所在的项目
-ContextProjectName 1-3EntityFrameWorkDemo #context类所在项目
-ConnectionStringName EmployeeDBContext #数据库连接字符串 名称
-Force #多次运行,是否重写迁移文件
-Verbose #详细信息
Add-Migration 命令介绍
Add-Migration [-Name] <String>
[-Force]
[-ProjectName <String>]
[-StartUpProjectName <String>]
[-ConfigurationTypeName <String>]
[-ConnectionStringName <String>]
[-IgnoreChanges]
[-AppDomainBaseDirectory <String>]
[<CommonParameters>]
代码补充
ErpMasterDbContext .cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Entity;
namespace Erp.EF
{
public partial class ErpMasterDbContext : DbContext
{
public ErpMasterDbContext() : base("default")
{
}
public ErpMasterDbContext(string connStr) : base(connStr)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
}
ErpDataDbContext .cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Entity;
namespace Erp.EF
{
public partial class ErpDataDbContext : DbContext
{
public ErpDataDbContext() : base("data")
{
}
public ErpDataDbContext(string connStr) : base(connStr)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
}
Q: 如果只有一个Dbcontext的CodeFirst怎么迁移呢?
A:可以使用上面的方法,也可以使用简单命令:
- Enable-Migrations //启用迁移
- Add-Migration //添加一次迁移
- Update-Database // 更新数据库
https://blog.csdn.net/qq_37326058/article/details/103994200
https://docs.microsoft.com/zh-cn/ef/ef6/modeling/code-first/migrations/#enabling-migrations