private DbTestContext NewDbTestContext() { return(new DbTestContext(DbOverride.New <SerenityDbScript>("Serenity", "DBSerenity"))); }
private void SetupOverride(DbOverride over) { lock (syncLock) { Action setConnectionString = delegate { SqlConnections.SetConnection(over.ConnectionKey, String.Format(DbSettings.Current.ConnectionStringFormat, over.DbAlias), DbSettings.Current.Provider); }; if (attachedHashes.ContainsKey(over.DbAlias)) { var currentHash = attachedHashes[over.DbAlias]; if (currentHash == over.ScriptHash) { setConnectionString(); return; } var newAlias = over.DbAlias + "_" + currentHash; DbManager.DetachDb(newAlias); attachedHashes.Remove(newAlias); DbManager.RenameDb(over.DbAlias, newAlias); attachedHashes[newAlias] = attachedHashes[over.DbAlias]; attachedHashes.Remove(over.DbAlias); } string possibleOldAlias = over.DbAlias + "_" + over.ScriptHash; if (attachedHashes.ContainsKey(possibleOldAlias)) { DbManager.DetachDb(over.DbAlias); attachedHashes.Remove(over.DbAlias); DbManager.RenameDb(possibleOldAlias, over.DbAlias); attachedHashes.Remove(possibleOldAlias); attachedHashes[over.DbAlias] = over.ScriptHash; setConnectionString(); return; } attachedHashes.Remove(over.DbAlias); DbManager.DetachDb(over.DbAlias); var mdfFilePath = DbManager.CreateDatabaseFilesForScript(over.Script, over.ScriptHash); try { DbManager.AttachDb(over.DbAlias, mdfFilePath); } catch (Exception) { DbManager.DetachDb(over.DbAlias); DbManager.DeleteDb(mdfFilePath); throw; } attachedHashes[over.DbAlias] = over.ScriptHash; setConnectionString(); } }