欧博官网:efcore 跨表查询,实现一个接口内查询两个差别数据库里各自的表数据

admin 1个月前 (07-07) 科技 19 0

  最近有efcore跨库查询的需求,研究了下colder框架里文档的分库实现,发现并不能完全实现一个接口下的跨库查询请求,只能知足一个营业层组织指定的唯一一个数据库接见接口。

先说下文档是怎么实现的

DbAccessor实现使用多数据库

默认框架会自动注入IDbAccessor作为数据库接见接口,在需要的时刻注入即可,若系统需要操作多个数据库,那么需要界说分外的接口继续IDbAccessor然后设置注入进去即可接见

  • 先界说新的接口IMyDbAccessor&NBsp;

  • 然后设置数据库类型和毗邻字符串 

  • 使用IMyDbAccessor 

这样就可以在任何地方注入并使用IMyDbAccessor,更多数据库同理设置即可

--上面的缺陷在于BaseBussiness 中只能组织一个IMyDbAccessor,也就是说只能注入和使用一个数据库的数据接见接口。

 

DbFactory.GetDbAccessor()实现 (推荐

不需要像上面那样事先依赖注入,再写自己的IMyDbAccessor接口继续IDbAccessor。

直接使用EFCore.Sharding中的DbFactory数据工厂

using EFCore.Sharding;
using Microsoft.ExteNSions.Logging;

namespace EFCore.Sharding
{
    //
    // 摘要:
    //     数据库工厂
    public static class DbFactory
    {
        //
        // 摘要:
        //     凭据设置文件获取数据库类型,并返回对应的工厂接口
        //
        // 参数:
        //   conString:
        //     完整数据库链接字符串
        //
        //   dbType:
        //     数据库类型
        //
        //   loggerFactory:
        //     日志工厂
        public static IDbAccessor GetDbAccessor(string conString, DatabaseType dbType, ILoggerFactory loggerFactory = null);
        //
        // 摘要:
        //     获取ShardingDbAccessor
        //
        // 参数:
        //   absDbName:
        //     抽象数据库
        //
        // 返回效果:
        //     ShardingDbAccessor
        public static IShardingDbAccessor GetShardingDbAccessor(string absDbName = "BaseDb");
    }
}

 

欧博官网:efcore 跨表查询,实现一个接口内查询两个差别数据库里各自的表数据 第1张

 

 

appsetting.json代码

欧博官网:efcore 跨表查询,实现一个接口内查询两个差别数据库里各自的表数据 第2张

 

 欧博官网:efcore 跨表查询,实现一个接口内查询两个差别数据库里各自的表数据 第3张

 

,

欧博allbet网址

欢迎进入欧博allbet网址(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务

AllBetGaming声明:该文看法仅代表作者自己,与本平台无关。转载请注明:欧博官网:efcore 跨表查询,实现一个接口内查询两个差别数据库里各自的表数据

网友评论

  • (*)

最新评论

站点信息

  • 文章总数:657
  • 页面总数:0
  • 分类总数:8
  • 标签总数:1016
  • 评论总数:245
  • 浏览总数:10378