public static DbConnection OpenConnection(this AppModule module) { DbConnection conn = null; if (module.Connection.UseLongConnection) { conn = GetExistsConnection(module.Name); if (conn == null) { lock (module) { conn = GetExistsConnection(module.Name); if (conn == null) { conn = OpenNewConnection(module); } _Connections.TryAdd(module.Name, conn); _ConnectionNames.TryAdd(conn, module.Name); } } } else { conn = OpenNewConnection(module); } return(conn); }
public static int ExecuteNoneQuery(AppModule module, SqlCommand sqlcommand, params object[] namevalues) { var db = module.OpenConnection(); var result = DBConn.ExecuteNoneQuery(db, sqlcommand, namevalues); db.CloseConnection(); return(result); }
public static IEnumerable <T> ExecuteCommand <T>(AppModule module, SqlCommand sqlcommand, params object[] namevalues) where T : IEntityBase, new() { var db = module.OpenConnection(); var result = DBConn.ExecuteQuery <T>(db, sqlcommand, namevalues).ToList(); db.CloseConnection(); return(result); }
private static DbConnection OpenNewConnection(AppModule module) { var factory = DbProviderFactories.GetFactory( string.IsNullOrWhiteSpace(module.Connection.ProviderName) ? "System.Data.SqlClient" : module.Connection.ProviderName); var conn = factory.CreateConnection(); conn.ConnectionString = module.Connection.ConnectionString; conn.Open(); //conn.Log(string.Format("新打开模块数据库连接[{0}]", module.Name), Category.Debug); return(conn); }
public static IEnumerable <CommandItem> CreateDefaultCommands(this AppModule module, Table table) { var dbsetting = CodeSetting.Current.DBSettings.Where(db => db.ProviderName.Equals(module.Connection.ProviderName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); if (dbsetting == null) { yield break; } SqlStringBuilder sqlbuilder = new SqlStringBuilder(dbsetting); foreach (var item in sqlbuilder.CreateDefaultCommands(table)) { yield return(item); } }
public static IEnumerable <Table> LoadTables(this AppModule module) { try { } catch (Exception) { throw; } var conn = module.OpenConnection(); string[] restrictions = new string[4]; restrictions[3] = "BASE TABLE"; DataTable stable = conn.GetSchema("Tables", restrictions); foreach (DataRow row in stable.Rows) { Table table = null; try { string tableName = row[1].ToString().Equals("dbo", StringComparison.OrdinalIgnoreCase) ? row[2].ToString() : string.Format("{0}.{1}", row[1], row[2]); string name = row[2].ToString(); if (module.Filter.Length > 0 && (!name.StartsWith(module.Filter, StringComparison.OrdinalIgnoreCase))) { continue; } table = new Table { Name = row[2].ToString(), Schema = row[1].ToString(), CodeName = row[2].ToString().ToFormatedName(), IsFromDB = true }; GetColumns(module, row[1].ToString(), row[2].ToString()).AddToCollection(table.Columns); var keycolumns = table.Columns.Where(c => c.IsKey).Select(c => c.Name).ToMergeString(","); table.Key = keycolumns; } catch (Exception) { throw; } yield return(table); conn.CloseConnection(); } }
private static bool CheckItemsCount(System.Data.Common.DbConnection db, AppModule module, SqlCommand sqlcommand, object[] paras, object expected) { bool flag = true; var table = module.GetTable(sqlcommand.Table); foreach (var logickey in table.LogicKeys) { var countCommand = module.GetCommand(string.Format("{0}.{1}.CountKey_{2}", module.Name, table.Name, logickey.ColumnName.Replace(",", "_"))); if (countCommand != null) { countCommand.Parameters = sqlcommand.Parameters; var count = DBConn.ExecuteScalar(db, countCommand, paras); if (!count.ToString().Equals(expected.ToString())) { return(false); } } } return(flag); }
public static IEnumerable <Column> GetColumns(this AppModule module, string schema, string table) { IEnumerable <Column> columns = null; var conn = module.OpenConnection(); columns = GetColumns(conn, schema, table, module.SqlBuilder.GetName(table)).ToList(); conn.CloseConnection(); foreach (var column in columns) { var sysColumn = module.SystemColumns.FirstOrDefault(s => s.Name.Equals(column.Name, StringComparison.OrdinalIgnoreCase)); if (sysColumn != null) { column.IsSystem = true; column.IsReadOnly = sysColumn.IsReadOnly; column.SystemParameter = sysColumn.SystemParameter; } yield return(column); } }