zoukankan      html  css  js  c++  java
  • .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.

    整个的配置就完成了

  • 相关阅读:
    centos7配置ntp服务器和客户端同步
    搭建Loki、Promtail、Grafana轻量级日志系统(centos7)
    DBLink实现备份文件不落盘的导入其他Oracle数据库实例的方法
    jumpserver使用docker安装
    shellwhile循环读取文件内容
    WEB数据挖掘(八)——Aperture数据抽取(4):Aperture整体结构
    WEB数据挖掘(十)——Aperture数据抽取(6):在Aperture中使用RDF2Go
    matlab练习程序(五次多项式轨迹规划)
    Android与Windows 7比拼悄然开始
    谷歌称年底前至少有18款Android手机上市
  • 原文地址:https://www.cnblogs.com/moonstars/p/15264821.html
Copyright © 2011-2022 走看看