配置文件开关,数据库读写分离

This commit is contained in:
橙子
2021-10-26 15:09:07 +08:00
parent b29b6be734
commit 5d5452b531
30 changed files with 397 additions and 163 deletions

View File

@@ -5,37 +5,49 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Yi.Framework.Common.Const;
using Yi.Framework.Common.IOCOptions;
using Yi.Framework.Model.Models;
namespace Yi.Framework.Model
{
//Add-Migration yi-1
//Update-Database yi-1
public partial class DataContext : DbContext
//Add-Migration yi-1
//Update-Database yi-1
public partial class DataContext : DbContext
{
private readonly IOptionsMonitor<MySqlConnOptions> _optionsMonitor;
private readonly string _connStr;
//private readonly IOptionsMonitor<MySqlConnOptions> _optionsMonitor;
private string _connStr;
public static string DbSelect = DbConst.Mysql;
//public DataContext(IOptionsMonitor<MySqlConnOptions> optionsMonitor)
//{
// _optionsMonitor = optionsMonitor;
// _connStr = _optionsMonitor.CurrentValue.WriteUrl;
//}
public DbContext ToWriteOrRead(string connstr)
{
_connStr = connstr;
return this;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
switch (DbSelect)
{
case DbConst.Mysql:
var serverVersion = new MySqlServerVersion(new Version(8, 0, 21));
optionsBuilder.UseMySql(_connStr, serverVersion); break;
case DbConst.Sqlite:
optionsBuilder.UseSqlite(_connStr); break;
case DbConst.Sqlserver:
optionsBuilder.UseSqlServer(_connStr);break;
case DbConst.Oracle:
optionsBuilder.UseOracle(_connStr);break;
default:
Console.WriteLine("错误!请确保你选择了正确的数据库!");break;
}
}
}
public DataContext(IOptionsMonitor<MySqlConnOptions> optionsMonitor)
{
_optionsMonitor = optionsMonitor;
_connStr = _optionsMonitor.CurrentValue.Url;
}
public DataContext(string connstr)
{
_connStr = connstr;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
//optionsBuilder.UseSqlite(_connStr);
var serverVersion = new MySqlServerVersion(new Version(8, 0, 21));
optionsBuilder.UseMySql(_connStr, serverVersion);
}
}
}
}