EntityFramework6.4.4 CodeFirst 一个项目中多个Context的初始化与迁移

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值