public override void ReaderExecuting(DbCommand command, DbCommandInterceptionContext <DbDataReader> interceptionContext) { //Select(读操作)走从库 var sqlText = command.CommandText; if (!sqlText.ToUpper().StartsWith("INSERT") || !sqlText.ToUpper().StartsWith("UPDATE")) { MasterSlaveManager.SwitchToSlave(command); } base.ReaderExecuting(command, interceptionContext); }
public override void NonQueryExecuting(DbCommand command, DbCommandInterceptionContext <int> interceptionContext) { //Insert/Update(写操作)走主库 foreach (var context in interceptionContext.DbContexts) { if (context.Database.CurrentTransaction == null) { MasterSlaveManager.SwitchToMaster(command); } } base.NonQueryExecuting(command, interceptionContext); }