Code First

This commit is contained in:
sunkaixuan
2017-06-17 23:50:28 +08:00
parent b80bd00b06
commit d12c8fed02
4 changed files with 33 additions and 4 deletions

View File

@@ -80,14 +80,26 @@ namespace SqlSugar
var dbColumns = this.Context.DbMaintenance.GetColumnInfosByTableName(tableName);
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();
var alterColumns = dbColumns.Where(dbColumn => entityInfo.Columns
.Any(entityCoulmn =>
dbColumn.DbColumnName.Equals(entityCoulmn.DbColumnName)
&&((entityCoulmn.Length!=dbColumn.Length&&PubMethod.GetUnderType(entityCoulmn.PropertyInfo).IsIn(PubConst.StringType))||entityCoulmn.IsNullable!=dbColumn.IsNullable)
)).ToList();
foreach (var item in addColumns)
{
this.Context.DbMaintenance.AddColumnToTable(tableName,EntityColumnToDbColumn(entityInfo,tableName,item));
this.Context.DbMaintenance.AddColumn(tableName,EntityColumnToDbColumn(entityInfo,tableName,item));
}
foreach (var item in droupColumns)
{
this.Context.DbMaintenance.DropColumn(tableName,item.DbColumnName);
}
foreach (var item in alterColumns)
{
var newitem = this.Context.RewritableMethods.TranslateCopy(item);
newitem.IsPrimarykey = false;
newitem.IsIdentity = false;
this.Context.DbMaintenance.UpdateColumn(tableName, newitem);
}
}
}
#endregion

View File

@@ -86,12 +86,17 @@ namespace SqlSugar
this.Context.Ado.ExecuteCommand(sql);
return true;
}
public virtual bool AddColumnToTable(string tableName, DbColumnInfo columnInfo)
public virtual bool AddColumn(string tableName, DbColumnInfo columnInfo)
{
string sql = GetAddColumnSql(tableName, columnInfo);
this.Context.Ado.ExecuteCommand(sql);
return true;
}
public virtual bool UpdateColumn(string tableName, DbColumnInfo column) {
string sql = GetUpdateColumnSql(tableName,column);
this.Context.Ado.ExecuteCommand(sql);
return true;
}
public virtual bool CreateTable(string tableName, List<DbColumnInfo> columns)
{
string sql = GetCreateTableSql(tableName, columns);
@@ -183,6 +188,17 @@ namespace SqlSugar
string result = string.Format(this.AddColumnToTableSql, tableName, columnName, dataType, dataSize, nullType, primaryKey, identity);
return result;
}
private string GetUpdateColumnSql(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.AlterColumnToTableSql, tableName, columnName, dataType, dataSize, nullType, primaryKey, identity);
return result;
}
#endregion
}
}

View File

@@ -27,7 +27,8 @@ namespace SqlSugar
bool DropTable(string tableName);
bool TruncateTable(string tableName);
bool CreateTable(string tableName, List<DbColumnInfo> columns);
bool AddColumnToTable(string tableName, DbColumnInfo column);
bool AddColumn(string tableName, DbColumnInfo column);
bool UpdateColumn(string tableName, DbColumnInfo column);
bool AddPrimaryKey(string tableName,string columnName);
bool DropConstraint(string tableName, string constraintName);
bool BackupDataBase(string databaseName,string fullFileName);

View File

@@ -93,7 +93,7 @@ namespace SqlSugar
{
get
{
return "ALTER TABLE {0} ALTER COLUMN {1}{2} {3} ";
return "ALTER TABLE {0} ALTER COLUMN {1} {2}{3} {4} {5} {6}";
}
}
protected override string BackupDataBaseSql