.net Core 基于EF Core 实现数据库上下文
在做项目时,需要将某一些功能的实体建立在另一个数据库中,连接不同的数据库用以存储记录。通过查找资料,实现EF Core上下文。
下面是实现上下文后的解决方案的目录:

1.UpAndDownDbContext

2.UpAndDownDbContextConfigurer

3.UpAndDownDbContextFactory

以上三个文件为第二个数据库的相关迁移和配置
4.新增MyConnectionStringResolver,根据不同的类型查找不同的数据库连接串

5.在MyTestProjectEntityFrameworkModule文件中新增部分代码,将MyConnectionStringResolver注入到Module中
namespace MyTestProject.EntityFrameworkCore
{
[DependsOn(
typeof(MyTestProjectCoreModule),
typeof(AbpZeroCoreEntityFrameworkCoreModule))]
public class MyTestProjectEntityFrameworkModule : AbpModule
{
/* Used it tests to skip dbcontext registration, in order to use in-memory database of EF Core */
public bool SkipDbContextRegistration { get; set; }
public bool SkipDbSeed { get; set; }
public override void PreInitialize()
{
#region 新增将计注入
Configuration.ReplaceService(typeof(IConnectionStringResolver), () =>
{
IocManager.IocContainer.Register(
Component.For<IConnectionStringResolver>()
.ImplementedBy<MyConnectionStringResolver>()
.LifestyleTransient()
);
});
#endregion
if (!SkipDbContextRegistration)
{
Configuration.Modules.AbpEfCore().AddDbContext<MyTestProjectDbContext>(options =>
{
if (options.ExistingConnection != null)
{
MyTestProjectDbContextConfigurer.Configure(options.DbContextOptions, options.ExistingConnection);
}
else
{
MyTestProjectDbContextConfigurer.Configure(options.DbContextOptions, options.ConnectionString);
}
});
}
#region 注入
// Configure workflow DbContext
Configuration.Modules.AbpEfCore().AddDbContext<UpAndDownDbContext>(options =>
{
if (options.ExistingConnection != null)
{
UpAndDownDbContextConfigurer.Configure(options.DbContextOptions, options.ExistingConnection);
}
else
{
UpAndDownDbContextConfigurer.Configure(options.DbContextOptions, options.ConnectionString);
}
});
#endregion
////Dapper
//DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.MySqlDialect();
}
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(typeof(MyTestProjectEntityFrameworkModule).GetAssembly());
}
//public override void PostInitialize()
//{
// if (!SkipDbSeed)
// {
// SeedHelper.SeedHostDb(IocManager);
// }
//}
}
}
6.在appsettings.json设置另一个数据库的连接串

7.在MyTestProjectConsts和SCMConsts中分别建立常量


以上就是实现数据库上下文的所有的相关配置过程。
最后测试一波
执行数据库迁移 ,由于配置了上下文所以在迁移时要指定DbContext:Add-Migration (迁移名称) -c UpAndDownDbContext(或MyTestProjectDbContext)。
若是不指定DbContext则会出现错误:More than one DbContext was found. Specify which one to use. Use the '-Context' parameter for PowerShell commands and the '--context' parameter for dotnet commands.
整个的配置就完成了。
.net Core 基于EF Core 实现数据库上下文的更多相关文章
- 基于EF Core的Code First模式的DotNetCore快速开发框架
前言 最近接了几个小单子,因为是小单子,项目规模都比较小,业务相对来说,也比较简单.所以在选择架构的时候,考虑到效率方面的因素,就采取了asp.net+entity framework中的code f ...
- 【基于EF Core的Code First模式的DotNetCore快速开发框架】完成对DB First代码生成的支持
前言 距离上一篇文章<基于EF Core的Code First模式的DotNetCore快速开发框架>已过去大半个年头,时光荏苒,岁月如梭...比较尴尬的是,在这大半个年头里,除了日常带娃 ...
- C# 嵌入dll 动软代码生成器基础使用 系统缓存全解析 .NET开发中的事务处理大比拼 C#之数据类型学习 【基于EF Core的Code First模式的DotNetCore快速开发框架】完成对DB First代码生成的支持 基于EF Core的Code First模式的DotNetCore快速开发框架 【懒人有道】在asp.net core中实现程序集注入
C# 嵌入dll 在很多时候我们在生成C#exe文件时,如果在工程里调用了dll文件时,那么如果不加以处理的话在生成的exe文件运行时需要连同这个dll一起转移,相比于一个单独干净的exe,这种形 ...
- .NET 5/.NET Core使用EF Core 5连接MySQL数据库写入/读取数据示例教程
本文首发于<.NET 5/.NET Core使用EF Core 5(Entity Framework Core)连接MySQL数据库写入/读取数据示例教程> 前言 在.NET Core/. ...
- ASP.NET CORE 使用 EF CORE访问数据库
asp.net core通过ef core来访问数据库,这里用的是代码优先,通过迁移来同步数据库与模型. 环境:vs2017,win10,asp.net core 2.1 一.从建立asp.net c ...
- Entity Framework Core(EF Core) 最简单的入门示例
目录 概述 基于 .NET Core 的 EF Core 入门 创建新项目 更改当前目录 安装 Entity Framework Core 创建模型 创建数据库 使用模型 基于 ASP.NET Cor ...
- 【ASP.NET Core】EF Core - “影子属性” 深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 1
[ASP.NET Core]EF Core - “影子属性” 有朋友说老周近来博客更新较慢,确实有些慢,因为有些 bug 要研究,另外就是老周把部分内容转到直播上面,所以写博客的内容减少了一点. ...
- .net core webapi+EF Core
.net core webapi+EF Core 一.描述: EF Core必须下载.net core2.0版本 Micorsoft.EntityFrameworkCore:EF框架的核心包Micor ...
- 一个官翻教程集合:ASP.NET Core 和 EF Core 系列教程
通过一个大学课程案例讲解了复杂实体的创建过程及讲解 1.ASP.NET Core 和 Entity Framework Core 系列教程——入门 (1 / 10) 2.ASP.NET Core 和 ...
随机推荐
- Javas数组03——数组的使用
Javas数组--数组的使用 1.普通的for循环 2.for-each循环 3.数组做方法入参 4.数组做返回值 例子1--普通for循环 package array; public clas ...
- RHCSA_DAY08
locate与find查找 locate:/var/lib/mlocate/mlocate.db getfacl 目录 chmod权限管理 chmod(英文全拼:change mode)设置用户对文件 ...
- HCIA—(网络初相识)
网络 IT--> 信息服务 -->数据底层 云计算 大数据 CT--> 通信服务 -->通信服务 构建数据通信的协议 ICT-->信息通信 数据 + 通信 数通 基础 R ...
- Java on Visual Studio Code的更新 – 2021年7月
Nick zhu, Senior Program Manager, Developer Division at Microsoft 大家好,欢迎来到 7 月版的 Visual Studio Code ...
- 我一个五年Android开发,居然被一个技术不如我的面试官嫌弃了......
背景 首先介绍一下自己的情况.目前所在的是一家小的创业公司,待了5年多,薪资一般吧.由于这几年公司也在转型.工作经历大概可以分为 3 个阶段. 第一阶段是从进公司开始做 android app 开发, ...
- lerna 常用命令
lerna 介绍 lerna 处理机构 固定模式(fixed) 所有包是统一的版本号,每次升级,所有包版本统一更新,不管这个包内容改变与否 具体体现在,lerna 的配置文件 lerna.json 中 ...
- JavaGUI输入框事件监听的使用
JavaGUI输入框事件监听的使用 package GUI; import java.awt.*; import java.awt.event.ActionEvent; import java.awt ...
- 遗传算法 TSP(Python代码)
该代码是本人根据B站up主侯昶曦的代码所修改的. 原代码github地址:https://github.com/Houchangxi/heuristic-algorithm/blob/master/T ...
- beeline: 新版连接Hive server的工具
HiveServer2 支持一个新的命令行Shell,称为Beeline,它是基于SQLLine CLI的JDBC客户端.它是从 Hive 0.11版本引入的,是Hive新的命令行客户端工具.Hive ...
- 1 TortoiseGit简介
tortoiseGit是一个开放的git版本控制系统的源客户端,支持Winxp/vista/win7.该软件功能和git一样 不同的是:git是命令行操作模式,tortoiseGit界面化操作模式,不 ...