public DbContext CreateDbContext(WirteOrRead dbType) { DbContext dbContext = null; if (dbType == WirteOrRead.Write) { dbContext = CallContext.GetData(WirteOrRead.Write); if (dbContext == null) { var optionsBuilder = new DbContextOptionsBuilder <AdncDbContext>(); optionsBuilder.UseMySql(_configuration.GetValue <string>("Mysql:WriteDb:ConnectionString") , mySqlOptions => mySqlOptions.ServerVersion(new ServerVersion(new Version("5.5.56-MariaDB"), ServerType.MySql)) ); dbContext = new AdncDbContext(optionsBuilder.Options, _userContext); CallContext.SetData(WirteOrRead.Write, dbContext); } } return(dbContext); }
public static DbContext GetData(WirteOrRead name) => state.TryGetValue(name.ToString(), out AsyncLocal <DbContext> data) ? data.Value : null;
public static void SetData(WirteOrRead name, DbContext data) => state.GetOrAdd(name.ToString(), _ => new AsyncLocal <DbContext>()).Value = data;