public SingleTableGeneratedEventArgs(Common.DbConfigDatabaseInfo db, Common.DbDataTableInfo table, Config generatorConfig, string entityClassFullName, string entityClassPath, int tableCount, int tableNum) { this.db = db; this.table = table; this.generatorConfig = generatorConfig; this.entityClassFullName = entityClassFullName; this.entityClassPath = entityClassPath; this.tableCount = tableCount; this.tableNum = tableNum; }
public static void Set(string key, Common.DbDataTableInfo value) { if (string.IsNullOrEmpty(key)) { throw new Exception("key不能为空"); } key = key.ToLower(); if (CacheDic.ContainsKey(key)) { CacheDic[key] = new StructCache { CacheTime = DateTime.Now, CacheData = value }; } else { CacheDic.Add(key, new StructCache { CacheTime = DateTime.Now, CacheData = value }); } }
public ZeroDbs.Common.DbDataTableInfo GetTable <T>() where T : class, new() { if (!IsMappingToDbKey <T>()) { throw new Exception("类型" + typeof(T).FullName + "没有映射到" + DbConfigDatabaseInfo.dbKey + "上"); } var key = typeof(T).FullName; var value = Common.DbDataviewStructCache.Get(key); if (value != null) { return(value); } var cmd = this.GetDbCommand(); try { var dv = Common.DbMapping.GetDbConfigDataViewInfo <T>().Find(o => string.Equals(o.dbKey, DbConfigDatabaseInfo.dbKey, StringComparison.OrdinalIgnoreCase)); string getTableOrViewSql = "select * from sqlite_master where name='" + dv.tableName + "' and type IN('table','view')"; Common.DbDataTableInfo dbDataTableInfo = null; List <string> IdentityNames = new List <string>(); cmd.CommandText = getTableOrViewSql; var reader = cmd.ExecuteReader(); while (reader.Read()) { string type = (reader["type"].ToString()).Trim(); string name = (reader["name"].ToString()).Trim(); string tbl_name = (reader["tbl_name"].ToString()).Trim(); int rootpage = Convert.ToInt32(reader["rootpage"].ToString()); string sql = (reader["sql"].ToString()).Trim(); System.Text.RegularExpressions.Match temp = System.Text.RegularExpressions.Regex.Match(sql, @"(?<column>[^\{\}\(\),]\w+)\b[a-zA-Z0-9 ]{1,}\bAUTOINCREMENT\b", System.Text.RegularExpressions.RegexOptions.IgnoreCase); if (temp.Success) { IdentityNames.Add(temp.Groups["column"].Value); } dbDataTableInfo = new Common.DbDataTableInfo(); dbDataTableInfo.DbName = cmd.DbConnection.DataSource;//cmd.DbConnection.Database; dbDataTableInfo.Name = reader["name"].ToString(); dbDataTableInfo.IsView = "view" == type; dbDataTableInfo.Description = (dbDataTableInfo.IsView ? "VIEW:" : "TABLE:") + dbDataTableInfo.Name; dbDataTableInfo.Colunms = new List <Common.DbDataColumnInfo>(); } reader.Close(); reader.Dispose(); if (dbDataTableInfo == null) { throw new Exception("查询" + dv.tableName + "的表信息不成功"); } string getColumnInfoSql = "PRAGMA table_info(" + dv.tableName + ")"; cmd.IsCheckCommandText = false; cmd.CommandText = getColumnInfoSql; reader = cmd.ExecuteReader(); while (reader.Read()) { ZeroDbs.Common.DbDataColumnInfo column = new ZeroDbs.Common.DbDataColumnInfo(); column.Name = reader["name"].ToString(); column.MaxLength = 0; column.Byte = 0; column.DecimalDigits = 0; column.DefaultValue = this.DbDataTypeMaping.GetDotNetDefaultValue(reader["dflt_value"].ToString(), reader["type"].ToString(), column.MaxLength); column.Description = reader["type"].ToString(); column.IsIdentity = IdentityNames.Contains(column.Name); column.IsNullable = "0" == reader["notnull"].ToString(); column.IsPrimaryKey = "0" != reader["pk"].ToString(); column.Type = this.DbDataTypeMaping.GetDotNetTypeString(reader["Type"].ToString(), column.MaxLength); dbDataTableInfo.Colunms.Add(column); } reader.Close(); reader.Dispose(); cmd.Dispose(); Common.DbDataviewStructCache.Set(key, dbDataTableInfo); return(dbDataTableInfo); } catch (Exception ex) { cmd.Dispose(); throw ex; } }
public List <ZeroDbs.Common.DbDataTableInfo> GetTables() { var cmd = this.GetDbCommand(); try { var dbName = cmd.DbConnection.DataSource;//cmd.DbConnection.Database; List <string> sqlList = new List <string>(); string getAllTableAndViewSql = "select * from sqlite_master where type IN('table','view') order by type"; List <ZeroDbs.Common.DbDataTableInfo> List = new List <ZeroDbs.Common.DbDataTableInfo>(); List <string> IdentityNames = new List <string>(); cmd.CommandText = getAllTableAndViewSql; var reader = cmd.ExecuteReader(); while (reader.Read()) { string type = (reader["type"].ToString()).Trim(); string name = (reader["name"].ToString()).Trim(); string tbl_name = (reader["tbl_name"].ToString()).Trim(); int rootpage = Convert.ToInt32(reader["rootpage"].ToString()); string sql = (reader["sql"].ToString()).Trim(); if ("sqlite_sequence" == name) { continue; } ZeroDbs.Common.DbDataTableInfo m = new Common.DbDataTableInfo(); m.DbName = dbName; m.Name = name; m.IsView = "view" == type; m.Description = (m.IsView ? "VIEW:": "TABLE:") + m.Name; m.Colunms = new List <Common.DbDataColumnInfo>(); List.Add(m); System.Text.RegularExpressions.Match temp = System.Text.RegularExpressions.Regex.Match(sql, @"(?<column>[^\{\}\(\),]\w+)\b[a-zA-Z0-9 ]{1,}\bAUTOINCREMENT\b", System.Text.RegularExpressions.RegexOptions.IgnoreCase); if (temp.Success) { IdentityNames.Add(temp.Groups["column"].Value); } } reader.Close(); reader.Dispose(); cmd.IsCheckCommandText = false; foreach (ZeroDbs.Common.DbDataTableInfo m in List) { string sql = "PRAGMA table_info(" + m.Name + ")"; cmd.CommandText = sql; reader = cmd.ExecuteReader(); while (reader.Read()) { ZeroDbs.Common.DbDataColumnInfo column = new ZeroDbs.Common.DbDataColumnInfo(); column.Name = reader["name"].ToString(); column.MaxLength = 0; column.Byte = 0; column.DecimalDigits = 0; column.DefaultValue = this.DbDataTypeMaping.GetDotNetDefaultValue(reader["dflt_value"].ToString(), reader["type"].ToString(), column.MaxLength); column.Description = reader["type"].ToString(); column.IsIdentity = IdentityNames.Contains(column.Name); column.IsNullable = "0" == reader["notnull"].ToString(); column.IsPrimaryKey = "0" != reader["pk"].ToString(); column.Type = this.DbDataTypeMaping.GetDotNetTypeString(reader["Type"].ToString(), column.MaxLength); m.Colunms.Add(column); } reader.Close(); reader.Dispose(); } cmd.Dispose(); return(List); } catch (Exception ex) { cmd.Dispose(); throw ex; } }
public List <ZeroDbs.Common.DbDataTableInfo> GetTables() { var cmd = this.GetDbCommand(); try { var dbName = cmd.DbConnection.Database; List <string> sqlList = new List <string>(); string getAllTableAndViewSql = "SELECT A.[id],A.[type],A.[name]," + "(SELECT TOP 1 ISNULL(value, '') FROM sys.extended_properties AS E LEFT JOIN (SELECT object_id,name AS name2 FROM sys.views UNION SELECT object_id,name AS name2 FROM sys.tables) AS T1 ON T1.object_id=major_id WHERE E.minor_id=0 AND E.name='MS_Description' AND name2=A.[name])" + "AS [description]" + " FROM[sysobjects] AS A" + " WHERE([type] = 'U' OR [type]= 'V') ORDER BY [type],[name]"; List <ZeroDbs.Common.DbDataTableInfo> List = new List <ZeroDbs.Common.DbDataTableInfo>(); cmd.CommandText = getAllTableAndViewSql; var reader = cmd.ExecuteReader(); while (reader.Read()) { ZeroDbs.Common.DbDataTableInfo m = new Common.DbDataTableInfo(); m.DbName = dbName; m.Name = reader["name"].ToString(); string type = (reader["type"].ToString()).Trim(); m.IsView = "V" == type; string description = reader["description"] == DBNull.Value ? "" : reader["description"].ToString(); if (string.IsNullOrEmpty(description)) { if (m.IsView) { description = "VIEW:" + m.Name; } else { description = "TABLE:" + m.Name; } } m.Description = description; m.Colunms = new List <Common.DbDataColumnInfo>(); List.Add(m); } reader.Close(); reader.Dispose(); foreach (ZeroDbs.Common.DbDataTableInfo m in List) { string sql = "SELECT C.Name AS [Name],T.Name AS [Type]," + "CONVERT(bit,C.IsNullable) AS [IsNullable]," + "CONVERT(bit,CASE WHEN EXISTS(SELECT 1 FROM sysobjects WHERE xtype='PK' AND parent_obj=C.Id AND Name IN(" + "SELECT Name FROM sysindexes WHERE Indid IN(" + "SELECT Indid FROM sysindexkeys WHERE Id=C.Id AND ColId=C.ColId))) THEN 1 ELSE 0 END)" + "AS [IsPrimaryKey]," + "CONVERT(bit,COLUMNPROPERTY(C.Id,C.Name,'IsIdentity')) AS [IsIdentity]," + "C.Length AS [Byte]," + "COLUMNPROPERTY(C.Id,C.Name,'PRECISION') AS [MaxLength]," + "ISNULL(COLUMNPROPERTY(C.Id,C.Name,'Scale'),0) AS [DecimalDigits]," + "ISNULL(CM.text,'') AS [DefaultValue]," + "ISNULL(ETP.value,'') AS [Description] " + "FROM syscolumns C " + "INNER JOIN systypes T ON C.xusertype = T.xusertype " + "LEFT JOIN sys.extended_properties ETP ON ETP.major_id=C.id AND ETP.minor_id=C.colid AND ETP.name='MS_Description' " + "LEFT JOIN syscomments CM ON C.cdefault=CM.id" + " WHERE C.Id=object_id('" + m.Name + "')"; cmd.CommandText = sql; reader = cmd.ExecuteReader(); while (reader.Read()) { ZeroDbs.Common.DbDataColumnInfo column = new ZeroDbs.Common.DbDataColumnInfo(); column.MaxLength = Convert.ToInt64(reader["MaxLength"]); column.Byte = Convert.ToInt64(reader["Byte"]); column.DecimalDigits = Convert.ToInt32(reader["DecimalDigits"]); column.DefaultValue = this.DbDataTypeMaping.GetDotNetDefaultValue(reader["DefaultValue"].ToString(), reader["Type"].ToString(), column.MaxLength); column.Description = reader["Description"].ToString(); column.IsIdentity = Convert.ToBoolean(reader["IsIdentity"]); column.IsNullable = Convert.ToBoolean(reader["IsNullable"]); column.IsPrimaryKey = Convert.ToBoolean(reader["IsPrimaryKey"]); column.Type = this.DbDataTypeMaping.GetDotNetTypeString(reader["Type"].ToString(), column.MaxLength); column.Name = reader["Name"].ToString(); m.Colunms.Add(column); } reader.Close(); reader.Dispose(); } cmd.Dispose(); return(List); } catch (Exception ex) { cmd.Dispose(); throw ex; } }
public ZeroDbs.Common.DbDataTableInfo GetTable <T>() where T : class, new() { if (!IsMappingToDbKey <T>()) { throw new Exception("类型" + typeof(T).FullName + "没有映射到" + DbConfigDatabaseInfo.dbKey + "上"); } var key = typeof(T).FullName; var value = Common.DbDataviewStructCache.Get(key); if (value != null) { return(value); } var cmd = this.GetDbCommand(); try { var dv = Common.DbMapping.GetDbConfigDataViewInfo <T>().Find(o => string.Equals(o.dbKey, DbConfigDatabaseInfo.dbKey, StringComparison.OrdinalIgnoreCase)); string getTableOrViewSql = "SELECT A.[id],A.[type],A.[name]," + "(SELECT TOP 1 ISNULL(value, '') FROM sys.extended_properties AS E LEFT JOIN (SELECT object_id,name AS name2 FROM sys.views UNION SELECT object_id,name AS name2 FROM sys.tables) AS T1 ON T1.object_id=major_id WHERE E.minor_id=0 AND E.name='MS_Description' AND name2=A.[name])" + "AS [description]" + " FROM [sysobjects] AS A" + " WHERE [name]='" + dv.tableName + "' AND ([type] = 'U' OR [type]= 'V') ORDER BY [type],[name]"; Common.DbDataTableInfo dbDataTableInfo = null; cmd.CommandText = getTableOrViewSql; var reader = cmd.ExecuteReader(); while (reader.Read()) { dbDataTableInfo = new Common.DbDataTableInfo(); dbDataTableInfo.DbName = cmd.DbConnection.Database; dbDataTableInfo.Name = reader["name"].ToString(); string type = (reader["type"].ToString()).Trim(); dbDataTableInfo.IsView = "V" == type; string description = reader["description"] == DBNull.Value ? "" : reader["description"].ToString(); if (string.IsNullOrEmpty(description)) { if (dbDataTableInfo.IsView) { description = "VIEW:" + dbDataTableInfo.Name; } else { description = "TABLE:" + dbDataTableInfo.Name; } } dbDataTableInfo.Description = description; dbDataTableInfo.Colunms = new List <Common.DbDataColumnInfo>(); } reader.Close(); reader.Dispose(); if (dbDataTableInfo == null) { throw new Exception("查询" + dv.tableName + "的表信息不成功"); } string getColumnInfoSql = "SELECT C.Name AS [Name],T.Name AS [Type]," + "CONVERT(bit,C.IsNullable) AS [IsNullable]," + "CONVERT(bit,CASE WHEN EXISTS(SELECT 1 FROM sysobjects WHERE xtype='PK' AND parent_obj=C.Id AND Name IN(" + "SELECT Name FROM sysindexes WHERE Indid IN(" + "SELECT Indid FROM sysindexkeys WHERE Id=C.Id AND ColId=C.ColId))) THEN 1 ELSE 0 END)" + "AS [IsPrimaryKey]," + "CONVERT(bit,COLUMNPROPERTY(C.Id,C.Name,'IsIdentity')) AS [IsIdentity]," + "C.Length AS [Byte]," + "COLUMNPROPERTY(C.Id,C.Name,'PRECISION') AS [MaxLength]," + "ISNULL(COLUMNPROPERTY(C.Id,C.Name,'Scale'),0) AS [DecimalDigits]," + "ISNULL(CM.text,'') AS [DefaultValue]," + "ISNULL(ETP.value,'') AS [Description] " + "FROM syscolumns C " + "INNER JOIN systypes T ON C.xusertype = T.xusertype " + "LEFT JOIN sys.extended_properties ETP ON ETP.major_id=C.id AND ETP.minor_id=C.colid AND ETP.name='MS_Description' " + "LEFT JOIN syscomments CM ON C.cdefault=CM.id" + " WHERE C.Id=object_id('" + dv.tableName + "')"; List <string> sqlList2 = new List <string>(); sqlList2.Add(getColumnInfoSql); cmd.CommandText = getColumnInfoSql; reader = cmd.ExecuteReader(); while (reader.Read()) { ZeroDbs.Common.DbDataColumnInfo column = new ZeroDbs.Common.DbDataColumnInfo(); column.MaxLength = Convert.ToInt64(reader["MaxLength"]); column.Byte = Convert.ToInt64(reader["Byte"]); column.DecimalDigits = Convert.ToInt32(reader["DecimalDigits"]); column.DefaultValue = this.DbDataTypeMaping.GetDotNetDefaultValue(reader["DefaultValue"].ToString(), reader["Type"].ToString(), column.MaxLength); column.Description = reader["Description"].ToString(); column.IsIdentity = Convert.ToBoolean(reader["IsIdentity"]); column.IsNullable = Convert.ToBoolean(reader["IsNullable"]); column.IsPrimaryKey = Convert.ToBoolean(reader["IsPrimaryKey"]); column.Type = this.DbDataTypeMaping.GetDotNetTypeString(reader["Type"].ToString(), column.MaxLength); column.Name = reader["Name"].ToString(); dbDataTableInfo.Colunms.Add(column); } reader.Close(); reader.Dispose(); cmd.Dispose(); Common.DbDataviewStructCache.Set(key, dbDataTableInfo); return(dbDataTableInfo); } catch (Exception ex) { cmd.Dispose(); throw ex; } }
public List <ZeroDbs.Common.DbDataTableInfo> GetTables() { var cmd = this.GetDbCommand(); try { var dbName = cmd.DbConnection.Database; string getAllTableAndViewSql = "SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA='" + dbName + "'"; List <ZeroDbs.Common.DbDataTableInfo> List = new List <ZeroDbs.Common.DbDataTableInfo>(); cmd.CommandText = getAllTableAndViewSql; var reader = cmd.ExecuteReader(); while (reader.Read()) { ZeroDbs.Common.DbDataTableInfo m = new Common.DbDataTableInfo(); bool isTable = (reader["TABLE_TYPE"].ToString() != "VIEW"); string tableName = reader["TABLE_NAME"].ToString(); string description = reader["TABLE_COMMENT"].ToString(); if (description != "") { if (isTable) { if (description == "TABLE") { description = "TABLE:" + tableName; } } else { if (description == "VIEW") { description = "VIEW:" + tableName; } } } m.Name = tableName; m.IsView = isTable ? false : true; m.Description = description; m.DbName = dbName; m.Colunms = new List <Common.DbDataColumnInfo>(); List.Add(m); } reader.Close(); reader.Dispose(); foreach (ZeroDbs.Common.DbDataTableInfo m in List) { string sql = "SELECT * FROM information_schema.COLUMNS WHERE table_schema='" + m.DbName + "' AND table_name='" + m.Name + "'"; cmd.CommandText = sql; reader = cmd.ExecuteReader(); while (reader.Read()) { ZeroDbs.Common.DbDataColumnInfo column = new ZeroDbs.Common.DbDataColumnInfo(); column.MaxLength = reader["CHARACTER_MAXIMUM_LENGTH"].ToString().Length > 0 ? Convert.ToInt64(reader["CHARACTER_MAXIMUM_LENGTH"]) : -1; column.Byte = reader["CHARACTER_OCTET_LENGTH"].ToString().Length > 0 ? Convert.ToInt64(reader["CHARACTER_OCTET_LENGTH"]) : -1; column.DecimalDigits = reader["NUMERIC_SCALE"].ToString().Length > 0 ? Convert.ToInt32(reader["NUMERIC_SCALE"]) : -1; column.DefaultValue = this.DbDataTypeMaping.GetDotNetDefaultValue(reader["COLUMN_DEFAULT"].ToString(), reader["DATA_TYPE"].ToString(), column.MaxLength); column.Description = reader["COLUMN_COMMENT"].ToString(); column.IsIdentity = reader["EXTRA"].ToString().ToLower() == "auto_increment"; column.IsNullable = reader["IS_NULLABLE"].ToString().ToLower() == "yes"; column.IsPrimaryKey = reader["COLUMN_KEY"].ToString().ToUpper() == "PRI";//COLUMN_KEY column.Name = reader["COLUMN_NAME"].ToString(); column.Type = this.DbDataTypeMaping.GetDotNetTypeString(reader["DATA_TYPE"].ToString(), column.MaxLength); m.Colunms.Add(column); } reader.Close(); reader.Dispose(); } cmd.Dispose(); return(List); } catch (Exception ex) { cmd.Dispose(); throw ex; } }
public ZeroDbs.Common.DbDataTableInfo GetTable <T>() where T : class, new() { if (!IsMappingToDbKey <T>()) { throw new Exception("类型" + typeof(T).FullName + "没有映射到" + DbConfigDatabaseInfo.dbKey + "上"); } var key = typeof(T).FullName; var value = Common.DbDataviewStructCache.Get(key); if (value != null) { return(value); } var cmd = this.GetDbCommand(); try { var dbName = cmd.DbConnection.Database; var dv = Common.DbMapping.GetDbConfigDataViewInfo <T>().Find(o => string.Equals(o.dbKey, DbConfigDatabaseInfo.dbKey, StringComparison.OrdinalIgnoreCase)); string getTableOrViewSql = "SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA='" + dbName + "' AND TABLE_NAME='" + dv.tableName + "'"; Common.DbDataTableInfo dbDataTableInfo = null; cmd.CommandText = getTableOrViewSql; var reader = cmd.ExecuteReader(); while (reader.Read()) { dbDataTableInfo = new Common.DbDataTableInfo(); ZeroDbs.Common.DbDataTableInfo m = new Common.DbDataTableInfo(); bool isTable = (reader["TABLE_TYPE"].ToString() != "VIEW"); string tableName = reader["TABLE_NAME"].ToString(); string description = reader["TABLE_COMMENT"].ToString(); if (description != "") { if (isTable) { if (description == "TABLE") { description = "TABLE:" + tableName; } } else { if (description == "VIEW") { description = "VIEW:" + tableName; } } } dbDataTableInfo.Name = tableName; dbDataTableInfo.IsView = isTable ? false : true; dbDataTableInfo.Description = description; dbDataTableInfo.DbName = dbName; dbDataTableInfo.Colunms = new List <Common.DbDataColumnInfo>(); } reader.Close(); reader.Dispose(); if (dbDataTableInfo == null) { throw new Exception("查询" + dv.tableName + "的表信息不成功"); } string getColumnInfoSql = "SELECT * FROM information_schema.COLUMNS WHERE table_schema='" + dbDataTableInfo.DbName + "' AND table_name='" + dbDataTableInfo.Name + "'";; cmd.CommandText = getColumnInfoSql; reader = cmd.ExecuteReader(); while (reader.Read()) { ZeroDbs.Common.DbDataColumnInfo column = new ZeroDbs.Common.DbDataColumnInfo(); column.MaxLength = reader["CHARACTER_MAXIMUM_LENGTH"].ToString().Length > 0 ? Convert.ToInt64(reader["CHARACTER_MAXIMUM_LENGTH"]) : -1; column.Byte = reader["CHARACTER_OCTET_LENGTH"].ToString().Length > 0 ? Convert.ToInt64(reader["CHARACTER_OCTET_LENGTH"]) : -1; column.DecimalDigits = reader["NUMERIC_SCALE"].ToString().Length > 0 ? Convert.ToInt32(reader["NUMERIC_SCALE"]) : -1; column.DefaultValue = this.DbDataTypeMaping.GetDotNetDefaultValue(reader["COLUMN_DEFAULT"].ToString(), reader["DATA_TYPE"].ToString(), column.MaxLength); column.Description = reader["COLUMN_COMMENT"].ToString(); column.IsIdentity = reader["EXTRA"].ToString().ToLower() == "auto_increment"; column.IsNullable = reader["IS_NULLABLE"].ToString().ToLower() == "yes"; column.IsPrimaryKey = reader["COLUMN_KEY"].ToString().ToUpper() == "PRI";//COLUMN_KEY column.Name = reader["COLUMN_NAME"].ToString(); column.Type = this.DbDataTypeMaping.GetDotNetTypeString(reader["DATA_TYPE"].ToString(), column.MaxLength); dbDataTableInfo.Colunms.Add(column); } reader.Close(); reader.Dispose(); cmd.Dispose(); Common.DbDataviewStructCache.Set(key, dbDataTableInfo); return(dbDataTableInfo); } catch (Exception ex) { cmd.Dispose(); throw ex; } }