Code First Change Data Type synchronization

This commit is contained in:
sunkaixuan
2017-06-21 20:58:22 +08:00
parent bc99b5ffe6
commit 47980cd682
2 changed files with 12 additions and 3 deletions

View File

@@ -13,8 +13,8 @@ namespace OrmTest.Demo
public int Id { get; set; }
[SugarColumn(Length = 21,OldColumnName = "Name2")]
public string Name{ get; set; }
[SugarColumn(IsNullable = true)]
public bool IsOk { get; set; }
[SugarColumn(IsNullable = true,Length =10)]
public string IsOk { get; set; }
public Guid Guid { get; set; }
public decimal Decimal { get; set; }
[SugarColumn(IsNullable = true)]

View File

@@ -111,7 +111,9 @@ namespace SqlSugar
.Where(ec => !dbColumns.Any(dc => dc.DbColumnName.Equals(ec.OldDbColumnName, StringComparison.CurrentCultureIgnoreCase)))
.Where(ec =>
dbColumns.Any(dc => dc.DbColumnName.Equals(ec.DbColumnName)
&& ((ec.Length != dc.Length && PubMethod.GetUnderType(ec.PropertyInfo).IsIn(PubConst.StringType)) || ec.IsNullable != dc.IsNullable))).ToList();
&& ((ec.Length != dc.Length && PubMethod.GetUnderType(ec.PropertyInfo).IsIn(PubConst.StringType)) ||
ec.IsNullable != dc.IsNullable ||
IsSamgeType(ec, dc)))).ToList();
var renameColumns = entityColumns
.Where(it => !string.IsNullOrEmpty(it.OldDbColumnName))
.Where(entityColumn => dbColumns.Any(dbColumn => entityColumn.OldDbColumnName.Equals(dbColumn.DbColumnName, StringComparison.CurrentCultureIgnoreCase)))
@@ -211,6 +213,13 @@ namespace SqlSugar
};
return result;
}
private bool IsSamgeType(EntityColumnInfo ec, DbColumnInfo dc)
{
var propType = this.Context.Ado.DbBind.GetDbTypeName(PubMethod.GetUnderType(ec.PropertyInfo).Name);
var dataType = dc.DataType;
return propType != dataType;
}
#endregion
}
}