mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-23 04:23:47 +08:00
Code First
This commit is contained in:
@@ -80,14 +80,26 @@ namespace SqlSugar
|
|||||||
var dbColumns = this.Context.DbMaintenance.GetColumnInfosByTableName(tableName);
|
var dbColumns = this.Context.DbMaintenance.GetColumnInfosByTableName(tableName);
|
||||||
var droupColumns = 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();
|
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)
|
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)
|
foreach (var item in droupColumns)
|
||||||
{
|
{
|
||||||
this.Context.DbMaintenance.DropColumn(tableName,item.DbColumnName);
|
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
|
#endregion
|
||||||
|
@@ -86,12 +86,17 @@ namespace SqlSugar
|
|||||||
this.Context.Ado.ExecuteCommand(sql);
|
this.Context.Ado.ExecuteCommand(sql);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
public virtual bool AddColumnToTable(string tableName, DbColumnInfo columnInfo)
|
public virtual bool AddColumn(string tableName, DbColumnInfo columnInfo)
|
||||||
{
|
{
|
||||||
string sql = GetAddColumnSql(tableName, columnInfo);
|
string sql = GetAddColumnSql(tableName, columnInfo);
|
||||||
this.Context.Ado.ExecuteCommand(sql);
|
this.Context.Ado.ExecuteCommand(sql);
|
||||||
return true;
|
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)
|
public virtual bool CreateTable(string tableName, List<DbColumnInfo> columns)
|
||||||
{
|
{
|
||||||
string sql = GetCreateTableSql(tableName, 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);
|
string result = string.Format(this.AddColumnToTableSql, tableName, columnName, dataType, dataSize, nullType, primaryKey, identity);
|
||||||
return result;
|
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
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -27,7 +27,8 @@ namespace SqlSugar
|
|||||||
bool DropTable(string tableName);
|
bool DropTable(string tableName);
|
||||||
bool TruncateTable(string tableName);
|
bool TruncateTable(string tableName);
|
||||||
bool CreateTable(string tableName, List<DbColumnInfo> columns);
|
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 AddPrimaryKey(string tableName,string columnName);
|
||||||
bool DropConstraint(string tableName, string constraintName);
|
bool DropConstraint(string tableName, string constraintName);
|
||||||
bool BackupDataBase(string databaseName,string fullFileName);
|
bool BackupDataBase(string databaseName,string fullFileName);
|
||||||
|
@@ -93,7 +93,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
get
|
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
|
protected override string BackupDataBaseSql
|
||||||
|
Reference in New Issue
Block a user