.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 和 ...
随机推荐
- Android面试大揭秘!从技术面被“虐”到征服CTO,全凭这份强到离谱的pdf
在笔者面试这一个月,看了不少文章,也刷了不少面试题,但真正有深度,适合4年及以上Android高工的内容少之又少 在面试准备阶段,笔者准备了三个月左右的时间,结合相关资料及源码,完成了一系列的深度学习 ...
- 深入理解Https如何保证通信安全
作为一名ABC搬运工,我相信很多人都知道Https,也都知道它是用来保证通信安全的,但是如果你没有深入了解过Https,可能并不知道它是如何保证通信安全的.我也是借着这次机会,和大家分享下我深入了解的 ...
- springboot的单元测试(总结两种)
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- 使用Freemarker导出Word文档(包含图片)代码实现及总结
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- Java中的形式参数和实际参数
一.概念 1.形式参数: 就是在定义函数或过程的时候命名的参数. 通俗讲就是一个记号. 2.实际参数: 就是在执行时,调用函数或过程时,传递给函数或过程的参数. 通俗讲就是实际值. 3.参数: 就是一 ...
- miniFTP项目实战三
项目简介: 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务 ...
- Intellj IDEA 光标显示insert状态解决办法
使用idea过程中,不知道怎么回事,鼠标的光标老是insert状态,体验效果极其差劲,于是去百度,扒拉了好一阵,过滤了垃圾博客,发现了有两种方法可以解决此问题: 第一种方法: 在File------& ...
- JS获取对象在内存中计算后的样式
通过obj.style的方式只能取得"内联style"的值,对于<style></style>中的css属性值,则无能为力 . 我们可以用obj.curre ...
- WPF/Winform 图表库LiveCharts
早前的博客,自己动手写了几个图表饼状图,柱形图,折线图等,重在思路. 那么如果你不想这么麻烦自己动手,有没有现成的图表库那? 当然有,虽然我也刚开始用没多久,不过还是对这么良心的项目充满了敬佩!! g ...
- Object--Date--calendar--System--StringBuilder--基本数据类型包装类型
Object java.lang.Object类是Java语言中的根类,即所有类的父类 默认toString()方法打印的是对象在堆中的地址值 默认equals()方法比较的也是地址(String中对 ...