/// <summary> /// Construye un LOCK para el esquema dado /// </summary> /// <param name="schema">Esquema de la base de datos</param> /// <returns>Consulta</returns> public string LOCK(Type type, string schema) { string tabla = string.Empty; if (schema == null) { tabla = GetSQLTable(type); } else { schema = "\"" + ((schema == "COMMON") ? schema : Convert.ToInt32(schema).ToString("0000")) + "\""; tabla = schema + ".\"" + Cfg.GetClassMapping(type).Table.Name + "\""; } //return String.Empty; switch (Cfg.GetProperty("dialect")) { // En PostgreSQL el LOCK se hace en el SELECT para hacerlo a nivel de registro // y no de tabla case "NHibernate.Dialect.PostgreSQL82Dialect": return(string.Empty); default: return("LOCK TABLE " + tabla + " IN ROW EXCLUSIVE MODE NOWAIT;"); } }
/// <summary> /// Devuelve el nombre de la tabla asociada a un tipo /// </summary> /// <param name="type">Tipo del objeto</param> /// <returns>Lo devuelve de la forma "schema"."tabla"</returns> public string GetSQLTable(Type type) { try { return(GetSQLTable(type, (AppContext.ActiveSchema != null) ? AppContext.ActiveSchema.Code : Cfg.GetProperty("default_schema"))); } catch { return(GetSQLTable(type, Cfg.GetProperty("default_schema"))); } }
public string GetConnectionParam(string param) { try { string con = Cfg.GetProperty("connection.connection_string"); String[] conParams = con.Split(new Char[] { ';' }); for (int i = 0; i < conParams.Length; i++) { if (conParams[i].Contains(param)) { return(conParams[i].Substring(conParams[i].IndexOf("=") + 1)); } } } catch { } throw new Exception(String.Format(Resources.Messages.NOT_FOUND_CONNECTION_PARAM, param)); }