ctrl_c + ctrl_v 出来的四不像 -- 连接Mysql
Posted comsokey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ctrl_c + ctrl_v 出来的四不像 -- 连接Mysql相关的知识,希望对你有一定的参考价值。
一、引用
mysql.Data.EntityFrameworkCore:8.0.12
二、连接字符串
将所有系统连接字符串统一放在数据库中,应用中仅保留一个连接字符串,方便维护。
底层使用了EF,所以只要根据配置动态生成数据库连接字符串,就可以随意切换数据库类型。(此功能预留,暂时懒得)
public interface IDbConnectionFormat
{
string GetConnection(DbConnection dbConnection);
DbContextOptions<DbConnectionContext> GetDbContextOptions(string context);
}
1 public class DbConnection 2 { 3 [System.ComponentModel.DataAnnotations.Key] 4 public string Key { get; set; } 5 6 public string Server { get; set; } 7 8 public string Userid { get; set; } 9 10 public string Pwd { get; set; } 11 12 public string Port { get; set; } 13 14 public string Database { get; set; } 15 16 public string Timeout { get; set; } 17 18 public string MaximumPoolSize { get; set; } 19 20 public string MinimumPoolSize { get; set; } 21 }
1 public class MySqlConnectionFormat : IDbConnectionFormat 2 { 3 /// <summary> 4 /// 默认的MySQL的链接字符串 5 /// </summary> 6 private const string DefaultMySqlConnectionString = "server={0};userid={1};pwd={2};port={3};database={4};SslMode=none;DefaultCommandTimeout={5};ConnectionTimeout={5};MaximumPoolSize={6};MinimumPoolSize={7};"; 7 8 9 public string GetConnection(DbConnection dbConnection) 10 { 11 return string.Format( 12 DefaultMySqlConnectionString, 13 dbConnection.Server, 14 dbConnection.Userid, 15 dbConnection.Pwd, 16 dbConnection.Port, 17 dbConnection.Database, 18 dbConnection.Timeout, 19 dbConnection.MaximumPoolSize, 20 dbConnection.MinimumPoolSize); 21 } 22 23 public DbContextOptions<DbConnectionContext> GetDbContextOptions(string context) 24 { 25 // 暂时不实现 26 throw new System.NotImplementedException(); 27 } 28 }
三、Context
这里本来不应该出现mysql字样的,应该根据配置反射或其他方法调用,但是偷懒就写死了。
1 public class DbConnectionContext : DbContext 2 { 3 public DbConnectionContext(DbContextOptions<DbConnectionContext> options) 4 : base(options) 5 { 6 this.Database.EnsureCreated(); 7 } 8 9 public DbConnectionContext(string connectionStirng) 10 : this(new DbContextOptionsBuilder<DbConnectionContext>().UseMySQL(connectionStirng).Options) 11 { 12 } 13 14 public DbSet<DbConnection> DbConnection { get; set; } 15 public DbSet<RedisConnection> RedisConnection { get; set; } 16 }
四、DAL,BLL,依赖注入啥的
网上比较多,我也懒得贴了。
五、发发牢骚
一入Procedure深似海... ...真的能不用就别用。虽然很好用,我也一直在用,我也很喜欢用,直到最近的一个客户说线上不允许使用(心中一万只羊驼狂奔)。。。
以上是关于ctrl_c + ctrl_v 出来的四不像 -- 连接Mysql的主要内容,如果未能解决你的问题,请参考以下文章
c语言里,for循环不像Java有让我知道循环控制的范围,语言怎么判断循环控制的范围呀?
全栈老司机roadmap笔记-------- javascript