This commit is contained in:
sunkaixuan 2017-06-17 21:45:17 +08:00
parent 10d664ceab
commit 58d5e9e8d2
5 changed files with 48 additions and 49 deletions

View File

@ -11,14 +11,7 @@ namespace SqlSugar
public virtual SqlSugarClient Context { get; set; }
#endregion
#region Fields
private bool _isBackupData = true;
private bool _isBackupTable = false;
private bool _isDeleteNoExistColumn = true;
#endregion
#region Public methods
public void InitTables(Type entityType)
{
var executeResult = Context.Ado.UseTran(() =>
@ -90,15 +83,19 @@ namespace SqlSugar
{
var tableName = GetTableName(entityInfo);
var dbColumns = this.Context.DbMaintenance.GetColumnInfosByTableName(tableName);
var errorColumns = dbColumns.Where(dbColumn => !entityInfo.Columns.Any(entityCoulmn => dbColumn.DbColumnName.Equals(entityCoulmn.DbColumnName))).ToList();
var droupColumns = dbColumns.Where(dbColumn => !entityInfo.Columns.Any(entityCoulmn => dbColumn.DbColumnName.Equals(entityCoulmn.DbColumnName))).ToList();
var addColumns= entityInfo.Columns.Where(entityColumn => !dbColumns.Any(dbColumn => entityColumn.DbColumnName.Equals(dbColumn.DbColumnName))).ToList();
foreach (var item in addColumns)
{
this.Context.DbMaintenance.AddColumnToTable(tableName,EntityColumnToDbColumn(entityInfo,tableName,item));
}
foreach (var item in droupColumns)
{
this.Context.DbMaintenance.DropColumn(tableName,item.DbColumnName);
}
}
// this.Context.DbMaintenance.CreateTable(tableName, columns);
}
public string GetCreateTableString(EntityInfo entityInfo)
@ -136,7 +133,6 @@ namespace SqlSugar
ColumnDescription = item.ColumnDescription
};
}
#endregion
}
}

View File

@ -83,38 +83,6 @@ namespace SqlSugar
}
#endregion
#region Get Sql
public virtual string GetCreateTableSql(string tableName, List<DbColumnInfo> columns)
{
List<string> columnArray = new List<string>();
Check.Exception(columns.IsNullOrEmpty(), "No columns found ");
foreach (var item in columns)
{
string columnName = item.DbColumnName;
string dataType = item.DataType;
string dataSize = item.Length > 0 ? string.Format("({0})", item.Length) : null;
string nullType = item.IsNullable ? this.CreateTableNull : CreateTableNotNull;
string primaryKey = item.IsPrimarykey ? this.CreateTablePirmaryKey : null;
string identity = item.IsIdentity ? this.CreateTableIdentity : null;
string addItem = string.Format(this.CreateTableColumn, columnName, dataType, dataSize, nullType, primaryKey, identity);
columnArray.Add(addItem);
}
string tableString = string.Format(this.CreateTableSql, tableName, string.Join(",\r\n", columnArray));
return tableString;
}
public virtual string GetAddColumnSql(string tableName, DbColumnInfo columnInfo)
{
string columnName = columnInfo.DbColumnName;
string dataType = columnInfo.DataType;
string dataSize = columnInfo.Length > 0 ? string.Format("({0})", columnInfo.Length) : null;
string nullType = columnInfo.IsNullable ? this.CreateTableNull : CreateTableNotNull;
string primaryKey = columnInfo.IsPrimarykey ? this.CreateTablePirmaryKey : null;
string identity = columnInfo.IsIdentity ? this.CreateTableIdentity : null;
string result = string.Format(this.AddColumnToTableSql, tableName, columnName, dataType, dataSize, nullType, primaryKey, identity);
return result;
}
#endregion
#region DDL
public bool AddColumnToTable(string tableName, DbColumnInfo columnName)
{
@ -122,7 +90,6 @@ namespace SqlSugar
this.Context.Ado.ExecuteCommand(sql);
return true;
}
public virtual bool CreateTable(string tableName, List<DbColumnInfo> columns)
{
string sql = GetCreateTableSql(tableName, columns);
@ -134,6 +101,10 @@ namespace SqlSugar
this.Context.Ado.ExecuteCommand(string.Format(this.DropTableSql, tableName));
return true;
}
public bool DropColumn(string tableName, string columnName) {
this.Context.Ado.ExecuteCommand(string.Format(this.DropColumnToTableSql, tableName,columnName));
return true;
}
public virtual bool TruncateTable(string tableName)
{
this.Context.Ado.ExecuteCommand(string.Format(this.TruncateTableSql, tableName));
@ -169,6 +140,35 @@ namespace SqlSugar
return reval;
});
}
private string GetCreateTableSql(string tableName, List<DbColumnInfo> columns)
{
List<string> columnArray = new List<string>();
Check.Exception(columns.IsNullOrEmpty(), "No columns found ");
foreach (var item in columns)
{
string columnName = item.DbColumnName;
string dataType = item.DataType;
string dataSize = item.Length > 0 ? string.Format("({0})", item.Length) : null;
string nullType = item.IsNullable ? this.CreateTableNull : CreateTableNotNull;
string primaryKey = item.IsPrimarykey ? this.CreateTablePirmaryKey : null;
string identity = item.IsIdentity ? this.CreateTableIdentity : null;
string addItem = string.Format(this.CreateTableColumn, columnName, dataType, dataSize, nullType, primaryKey, identity);
columnArray.Add(addItem);
}
string tableString = string.Format(this.CreateTableSql, tableName, string.Join(",\r\n", columnArray));
return tableString;
}
private string GetAddColumnSql(string tableName, DbColumnInfo columnInfo)
{
string columnName = columnInfo.DbColumnName;
string dataType = columnInfo.DataType;
string dataSize = columnInfo.Length > 0 ? string.Format("({0})", columnInfo.Length) : null;
string nullType = columnInfo.IsNullable ? this.CreateTableNull : CreateTableNotNull;
string primaryKey = columnInfo.IsPrimarykey ? this.CreateTablePirmaryKey : null;
string identity = columnInfo.IsIdentity ? this.CreateTableIdentity : null;
string result = string.Format(this.AddColumnToTableSql, tableName, columnName, dataType, dataSize, nullType, primaryKey, identity);
return result;
}
#endregion
}
}

View File

@ -26,6 +26,7 @@ namespace SqlSugar
protected abstract string BackupTableSql { get; }
protected abstract string TruncateTableSql { get; }
protected abstract string DropTableSql { get; }
protected abstract string DropColumnToTableSql { get; }
#endregion
#region Scattered

View File

@ -27,11 +27,6 @@ namespace SqlSugar
bool IsIdentity(string tableName, string column);
#endregion
#region Get Sql
string GetCreateTableSql(string tableName, List<DbColumnInfo> columns);
string GetAddColumnSql(string tableName, DbColumnInfo columnName);
#endregion
#region DDL
bool DropTable(string tableName);
bool TruncateTable(string tableName);
@ -41,6 +36,7 @@ namespace SqlSugar
bool AddColumnToTable(string tableName, DbColumnInfo column);
bool BackupDataBase(string databaseName,string fullFileName);
bool DropColumn(string tableName,string columnName);
#endregion
}
}

View File

@ -131,7 +131,13 @@ namespace SqlSugar
return "DROP TABLE {0}";
}
}
protected override string DropColumnToTableSql
{
get
{
return "ALTER TABLE {0} DROP COLUMN {1}";
}
}
#endregion
#region Scattered