cap mysql_.NetCore关于Cap(RabbitMQ)结合MySql使用出现MySql相关类冲突问题解决办法
问题还原
引用了
DotNetCore.CAP.MySql
MySql.Data.EntityFrameworkCore
在使用MySql相关对象的时候会出现如下冲突,在命名空间加入伪空间名称是不能解决这个问题的(注:如果直接用这个Pomelo.EntityFrameworkCore.MySql是不会有问题的)
解决问题
出现上面的问题肯定要改造代码,那么我们在只能不用这些对象了
不用这些对象怎么来实现操作数据库呢?
所以只用调用上下文对象了,获取连接只能使用 上下文对象中的操作
之前做了一个CQRS 是直接用Dapper访问的数据,封装了一个工厂,现在我用上下文就不需要这些
添加DbContext配置
services.AddDbContext(
optionsBuilder=>{var _userappsetting = Configuration.GetSection("UserDbConfig").Get();if (_userappsetting == null)
{throw new Exception("数据库连接字符串未配置");
}switch(_userappsetting.DbType)
{case 1:
optionsBuilder.UseSqlServer(_userappsetting.UserConnectString, sqlserver=>{
sqlserver.MigrationsAssembly(_migrationAssablyName);
sqlserver.UseRowNumberForPaging();
});break;case 2:
optionsBuilder.UseMySQL(_userappsetting.UserConnectString, mysql=>{
mysql.MigrationsAssembly(_migrationAssablyName);
});break;default:
optionsBuilder.UseMySQL(_userappsetting.UserConnectString, mysql=>{
mysql.MigrationsAssembly(_migrationAssablyName);
});break;
}
});
同时将上下文对象注册到构成函数中去
.AddSingleton(p =>{var context = p.GetRequiredService();return newCreateDbProviderFactory(context);
}
这样做还有一个好处,不用在根据在工厂类去判断使用的是什么数据库了,这个工作全部都交给了UserDbContext上下文文对象了
改造后的代码
public classCreateDbProviderFactory : IDbProviderFactory
{private readonlyUserDbContext _context;publicCreateDbProviderFactory(UserDbContext context)
{
_context=context;
}publicIDbConnection GetConnection()
{return_context.Database.GetDbConnection();
}
}
这样开始来也比较简洁了
在用户登录查询如下使用
using (var db =_dbProviderFactory.GetConnection())
{var model = (await db.QueryAsync("select * from tb_user where username=@username and password=@password", new { @username = username, @password =password })).FirstOrDefault();
}
这样做及时解决了冲突的问题,同时还简化了代码
cap mysql_.NetCore关于Cap(RabbitMQ)结合MySql使用出现MySql相关类冲突问题解决办法相关推荐
- mysql中CONCAT值为空的问题解决办法
mysql中CONCAT值为空的问题解决办法 参考文章: (1)mysql中CONCAT值为空的问题解决办法 (2)https://www.cnblogs.com/fogwang/p/5536897. ...
- 分布式CAP理论:为什么CAP理论中的三个指标不能同时满足呢?
文章目录 前言 分布式系统的特点 分布式系统技术是用来解决什么问题的呢? CAP代表什么含义 一致性(Consistency) 可用性(Availability) 分区容错性(Partition To ...
- js 连接mysql_搭建node服务(二):操作MySQL
为了进行复杂信息的存储和查询,服务端系统往往需要数据库操作.数据库分为关系型数据库和非关系型数据库,关系型数据库有MySQL.Oracle.SQL Server等,非关系型数据库有Redis(常用来做 ...
- httpd是mysql_在Centos下安装httpd、php、Mysql并配置(转载)
转自:http://club.jledu.gov.cn/?action-viewspace-itemid-299020 1.安装Apahce, PHP, Mysql, 以及php连接mysql库组件. ...
- linux ljie mysql_[Linux Mysql] Linux下Mysql的基本操作
1. 连接Mysql 1.1 连接到本机上的Mysql 键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码 ...
- ubuntu 转mysql_(转)Ubuntu 16.04下安装MySQL
转自:https://www.linuxidc.com/Linux/2017-06/144805.htm 首先执行下面三条命令: sudo apt-get install mysql-server s ...
- 字符界面运行mysql_详解linux系列之字符界面下MySQL+apache+php的源代码安装
详解linux系列之字符界面下MySQL+apache+php的源代码安装 在前面介绍了linux和在字符下安装,下面我来介绍一下程序包的安装. 大家也许都知道在linux安装程序的时候后用rpm包安 ...
- ruby sinatra mysql_关于在 OpenShift 上部署的 Sinatra 使用 MySQL 的问题
本人是 Ruby 新手,想通过在 openshift 上部署 sinatra 来慢慢学习,感觉 ror 实在是繁杂故先选择了感觉轻量级的 sinatra,数据库也是了解了大概,希望大大能帮助我> ...
- vapor mysql_无法在Vapor项目中连接我的MySQL数据库
我是Vapor的新手,我想尝试连接我的MySQL数据库.我在官方文档中找到了如何执行此操作,但当我尝试发送查询时,它会抛出一个错误: No services are available for 'Da ...
最新文章
- 更换YUM及升级包方法
- solr部署在tomcat下
- 通过修改注册表,实现网页链接中的私有协议启用本地exe进程
- [css] 举例说明时间、频率、角度、弧度、百分度的单位分别是哪些?
- spring+websocket综合(springMVC+spring+MyBatis这是SSM框架和websocket集成技术)
- android平台代号、版本、API 级别和 NDK 版本
- MySQL数据库导入SQL[ERR]Unknown collation: ‘utf8mb4_0900_ai_ci‘的解决办法
- xampp错误: mysql 非正常关闭._mysql数据库DBA实用技巧--为你的数据库开启Innodb监控...
- 等值连接_【高中地理】重难点内容:16种等值线的解读和应用
- java数组base64编码,java将base64编码字符串还原为字节数组
- Linux系统下从百度云快速下载文件的姿势(2020.07月更)
- MCGS 昆仑通态触摸屏 modbus TCP 数据转发
- 单行文本溢出显示省略号
- 阿里云acp考试简介,以及考试准备与攻略
- win7计算机右键菜单多,win7系统清理右键菜单多余的选项|win7删除右键菜单多余选项的方法...
- easyExcel导出文件为空解决
- 微信小程序开发工具 将已存在的Git项目在新开发者下拉取推送
- uniapp日历插件
- android蓝牙传输文件到mysql_蓝牙opp文件发送过程剖析
- Windows的cmd中cd指令切换路径
热门文章
- LeetCode简单题之唯一元素的和
- 多实例gpu_MIG技术快速提高AI生产率
- 1977中文版_历年星云、雨果获奖长篇中文版汇总
- databinding 入门 知识 给TextView 赋值
- Unix/Linux/Mac os下 文件互传
- asp.net[web.config] httphandlers 与实现自由定义访问地址
- Rstudio 实现 爬虫 文本分词 个性化词云设计--我爱中国我爱党
- 2022-2028年中国摩托车行业投资分析及前景预测报告(全卷)
- Python 列表生成式的使用
- Pandas 基础 (2)—— DataFrame