Update Core

This commit is contained in:
sunkaixuan 2018-11-11 21:08:35 +08:00
parent 0809d3154f
commit 2b2a810b9c
29 changed files with 531 additions and 45 deletions

View File

@ -11,6 +11,7 @@ namespace SqlSugar
public virtual SqlSugarClient Context { get; set; } public virtual SqlSugarClient Context { get; set; }
private bool IsBackupTable { get; set; } private bool IsBackupTable { get; set; }
private int MaxBackupDataRows { get; set; } private int MaxBackupDataRows { get; set; }
private int DefultLength { get; set; }
#endregion #endregion
#region Public methods #region Public methods
@ -20,6 +21,12 @@ namespace SqlSugar
this.MaxBackupDataRows = maxBackupDataRows; this.MaxBackupDataRows = maxBackupDataRows;
return this; return this;
} }
public virtual ICodeFirst SetStringDefaultLength(int length) {
DefultLength = length;
return this;
}
public virtual void InitTables(Type entityType) public virtual void InitTables(Type entityType)
{ {
@ -67,12 +74,22 @@ namespace SqlSugar
protected virtual void Execute(Type entityType) protected virtual void Execute(Type entityType)
{ {
var entityInfo = this.Context.EntityMaintenance.GetEntityInfo(entityType); var entityInfo = this.Context.EntityMaintenance.GetEntityInfo(entityType);
if (this.DefultLength > 0) {
foreach (var item in entityInfo.Columns)
{
if (item.PropertyInfo.PropertyType == UtilConstants.StringType && item.DataType.IsNullOrEmpty()&& item.Length==0) {
item.Length = DefultLength;
}
}
}
var tableName = GetTableName(entityInfo); var tableName = GetTableName(entityInfo);
var isAny = this.Context.DbMaintenance.IsAnyTable(tableName); var isAny = this.Context.DbMaintenance.IsAnyTable(tableName);
if (isAny) if (isAny)
ExistLogic(entityInfo); ExistLogic(entityInfo);
else else
NoExistLogic(entityInfo); NoExistLogic(entityInfo);
this.Context.DbMaintenance.AddRemark(entityInfo);
} }
public virtual void NoExistLogic(EntityInfo entityInfo) public virtual void NoExistLogic(EntityInfo entityInfo)
{ {

View File

@ -45,7 +45,7 @@ namespace SqlSugar
cacheKey = GetCacheKey(cacheKey); cacheKey = GetCacheKey(cacheKey);
var sql = string.Format(this.GetColumnInfosByTableNameSql, tableName); var sql = string.Format(this.GetColumnInfosByTableNameSql, tableName);
if (isCache) if (isCache)
return GetListOrCache<DbColumnInfo>(cacheKey, sql).GroupBy(it=>it.DbColumnName).Select(it=>it.First()).ToList(); return GetListOrCache<DbColumnInfo>(cacheKey, sql).GroupBy(it => it.DbColumnName).Select(it => it.First()).ToList();
else else
return this.Context.Ado.SqlQuery<DbColumnInfo>(sql).GroupBy(it => it.DbColumnName).Select(it => it.First()).ToList(); return this.Context.Ado.SqlQuery<DbColumnInfo>(sql).GroupBy(it => it.DbColumnName).Select(it => it.First()).ToList();
@ -208,6 +208,79 @@ namespace SqlSugar
this.Context.Ado.ExecuteCommand(sql); this.Context.Ado.ExecuteCommand(sql);
return true; return true;
} }
public virtual bool AddColumnRemark(string columnName, string tableName, string description)
{
string sql = string.Format(this.AddColumnRemarkSql, columnName, tableName, description);
this.Context.Ado.ExecuteCommand(sql);
return true;
}
public virtual bool DeleteColumnRemark(string columnName, string tableName)
{
string sql = string.Format(this.DeleteColumnRemarkSql, columnName, tableName);
this.Context.Ado.ExecuteCommand(sql);
return true;
}
public virtual bool IsAnyColumnRemark(string columnName, string tableName)
{
string sql = string.Format(this.IsAnyColumnRemarkSql, columnName, tableName);
var dt=this.Context.Ado.GetDataTable(sql);
return dt.Rows!=null&&dt.Rows.Count>0;
}
public virtual bool AddTableRemark(string tableName, string description)
{
string sql = string.Format(this.AddTableRemarkSql, tableName, description);
this.Context.Ado.ExecuteCommand(sql);
return true;
}
public virtual bool DeleteTableRemark(string tableName)
{
string sql = string.Format(this.DeleteTableRemarkSql,tableName);
this.Context.Ado.ExecuteCommand(sql);
return true;
}
public virtual bool IsAnyTableRemark(string tableName)
{
string sql = string.Format(this.IsAnyTableRemarkSql, tableName);
var dt=this.Context.Ado.GetDataTable(sql);
return dt.Rows != null && dt.Rows.Count > 0;
}
public virtual bool AddRemark(EntityInfo entity)
{
var db = this.Context;
var columns = entity.Columns.Where(it => it.IsIgnore == false).ToList();
foreach (var item in columns)
{
if (item.ColumnDescription != null)
{
//column remak
if (db.DbMaintenance.IsAnyColumnRemark(item.DbColumnName, item.DbTableName))
{
db.DbMaintenance.DeleteColumnRemark(item.DbColumnName, item.DbTableName);
db.DbMaintenance.AddColumnRemark(item.DbColumnName, item.DbTableName, item.ColumnDescription);
}
else
{
db.DbMaintenance.AddColumnRemark(item.DbColumnName, item.DbTableName, item.ColumnDescription);
}
}
}
//table remak
if (entity.TableDescription != null)
{
if (db.DbMaintenance.IsAnyTableRemark(entity.DbTableName))
{
db.DbMaintenance.DeleteTableRemark(entity.DbTableName);
db.DbMaintenance.AddTableRemark(entity.DbTableName, entity.TableDescription);
}
else
{
db.DbMaintenance.AddTableRemark(entity.DbTableName, entity.TableDescription);
}
}
return true;
}
#endregion #endregion
#region Private #region Private

View File

@ -43,6 +43,12 @@ namespace SqlSugar
protected abstract string DropConstraintSql { get; } protected abstract string DropConstraintSql { get; }
protected abstract string AddPrimaryKeySql { get; } protected abstract string AddPrimaryKeySql { get; }
protected abstract string RenameColumnSql { get; } protected abstract string RenameColumnSql { get; }
protected abstract string AddColumnRemarkSql { get; }
protected abstract string DeleteColumnRemarkSql { get; }
protected abstract string IsAnyColumnRemarkSql { get; }
protected abstract string AddTableRemarkSql { get; }
protected abstract string DeleteTableRemarkSql { get; }
protected abstract string IsAnyTableRemarkSql { get; }
#endregion #endregion
#region Check #region Check

View File

@ -27,6 +27,10 @@ namespace SqlSugar
{ {
var sugarTable = (SugarTable)sugarAttributeInfo; var sugarTable = (SugarTable)sugarAttributeInfo;
result.DbTableName = sugarTable.TableName; result.DbTableName = sugarTable.TableName;
result.TableDescription = sugarTable.TableDescription;
}
if (this.Context.Context.CurrentConnectionConfig.ConfigureExternalServices != null && this.Context.CurrentConnectionConfig.ConfigureExternalServices.EntityNameService != null) {
this.Context.CurrentConnectionConfig.ConfigureExternalServices.EntityNameService(type,result);
} }
result.Type = type; result.Type = type;
result.EntityName = result.Type.Name; result.EntityName = result.Type.Name;

View File

@ -50,6 +50,12 @@ namespace SqlSugar
QueryBuilder.Clear(); QueryBuilder.Clear();
} }
public ISugarQueryable<T> Clone()
{
var queryable = this.Context.Queryable<T>().WithCacheIF(IsCache, CacheTime);
CopyQueryBuilder(queryable.QueryBuilder);
return queryable;
}
public virtual ISugarQueryable<T> AS<T2>(string tableName) public virtual ISugarQueryable<T> AS<T2>(string tableName)
{ {
var entityName = typeof(T2).Name; var entityName = typeof(T2).Name;
@ -1264,23 +1270,28 @@ namespace SqlSugar
} }
} }
} }
private ISugarQueryable<T> CopyQueryable() protected ISugarQueryable<T> CopyQueryable()
{ {
var asyncContext = this.Context.Utilities.CopyContext(true); var asyncContext = this.Context.Utilities.CopyContext(true);
asyncContext.CurrentConnectionConfig.IsAutoCloseConnection = true; asyncContext.CurrentConnectionConfig.IsAutoCloseConnection = true;
var asyncQueryable = asyncContext.Queryable<ExpandoObject>().Select<T>(string.Empty).WithCacheIF(IsCache, CacheTime);
CopyQueryBuilder(asyncQueryable.QueryBuilder); return asyncQueryable;
}
var asyncQueryable = asyncContext.Queryable<ExpandoObject>().Select<T>(string.Empty); protected void CopyQueryBuilder(QueryBuilder asyncQueryableBuilder)
var asyncQueryableBuilder = asyncQueryable.QueryBuilder; {
var pars = new List<SugarParameter>();
pars.AddRange(this.QueryBuilder.Parameters);
asyncQueryableBuilder.Take = this.QueryBuilder.Take; asyncQueryableBuilder.Take = this.QueryBuilder.Take;
asyncQueryableBuilder.Skip = this.QueryBuilder.Skip; asyncQueryableBuilder.Skip = this.QueryBuilder.Skip;
asyncQueryableBuilder.SelectValue = this.QueryBuilder.SelectValue; asyncQueryableBuilder.SelectValue = this.QueryBuilder.SelectValue;
asyncQueryableBuilder.WhereInfos = this.QueryBuilder.WhereInfos; asyncQueryableBuilder.WhereInfos =this.Context.Utilities.TranslateCopy(this.QueryBuilder.WhereInfos);
asyncQueryableBuilder.EasyJoinInfos = this.QueryBuilder.EasyJoinInfos; asyncQueryableBuilder.EasyJoinInfos = this.QueryBuilder.EasyJoinInfos;
asyncQueryableBuilder.JoinQueryInfos = this.QueryBuilder.JoinQueryInfos; asyncQueryableBuilder.JoinQueryInfos = this.QueryBuilder.JoinQueryInfos;
asyncQueryableBuilder.WhereIndex = this.QueryBuilder.WhereIndex; asyncQueryableBuilder.WhereIndex = this.QueryBuilder.WhereIndex;
asyncQueryableBuilder.EntityType = this.QueryBuilder.EntityType; asyncQueryableBuilder.EntityType = this.QueryBuilder.EntityType;
asyncQueryableBuilder.EntityName = this.QueryBuilder.EntityName; asyncQueryableBuilder.EntityName = this.QueryBuilder.EntityName;
asyncQueryableBuilder.Parameters = this.QueryBuilder.Parameters; asyncQueryableBuilder.Parameters = pars;
asyncQueryableBuilder.TableShortName = this.QueryBuilder.TableShortName; asyncQueryableBuilder.TableShortName = this.QueryBuilder.TableShortName;
asyncQueryableBuilder.TableWithString = this.QueryBuilder.TableWithString; asyncQueryableBuilder.TableWithString = this.QueryBuilder.TableWithString;
asyncQueryableBuilder.GroupByValue = this.QueryBuilder.GroupByValue; asyncQueryableBuilder.GroupByValue = this.QueryBuilder.GroupByValue;
@ -1288,7 +1299,8 @@ namespace SqlSugar
asyncQueryableBuilder.IsDisabledGobalFilter = this.QueryBuilder.IsDisabledGobalFilter; asyncQueryableBuilder.IsDisabledGobalFilter = this.QueryBuilder.IsDisabledGobalFilter;
asyncQueryableBuilder.PartitionByValue = this.QueryBuilder.PartitionByValue; asyncQueryableBuilder.PartitionByValue = this.QueryBuilder.PartitionByValue;
asyncQueryableBuilder.JoinExpression = this.QueryBuilder.JoinExpression; asyncQueryableBuilder.JoinExpression = this.QueryBuilder.JoinExpression;
return asyncQueryable; asyncQueryableBuilder.WhereIndex = this.QueryBuilder.WhereIndex;
asyncQueryableBuilder.LambdaExpressions.ParameterIndex = this.QueryBuilder.LambdaExpressions.ParameterIndex;
} }
#endregion #endregion
} }
@ -1460,6 +1472,12 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
public new ISugarQueryable<T,T2> Clone()
{
var queryable = this.Context.Queryable<T,T2>((t,t2)=>new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(queryable.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2> AS<AsT>(string tableName) public new ISugarQueryable<T, T2> AS<AsT>(string tableName)
{ {
var entityName = typeof(AsT).Name; var entityName = typeof(AsT).Name;
@ -1737,6 +1755,12 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
public new ISugarQueryable<T, T2,T3> Clone()
{
var queryable = this.Context.Queryable<T, T2,T3>((t, t2,t3) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(queryable.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3> AS<AsT>(string tableName) public new ISugarQueryable<T, T2, T3> AS<AsT>(string tableName)
{ {
var entityName = typeof(AsT).Name; var entityName = typeof(AsT).Name;
@ -2046,6 +2070,12 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
public new ISugarQueryable<T, T2,T3,T4> Clone()
{
var queryable = this.Context.Queryable<T, T2,T3,T4>((t, t2,t3,t4) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(queryable.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4> AS<AsT>(string tableName) public new ISugarQueryable<T, T2, T3, T4> AS<AsT>(string tableName)
{ {
var entityName = typeof(AsT).Name; var entityName = typeof(AsT).Name;
@ -2358,6 +2388,12 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
public new ISugarQueryable<T, T2, T3, T4,T5> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4,T5>((t, t2, t3, t4,t5) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(queryable.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5> AS<AsT>(string tableName) public new ISugarQueryable<T, T2, T3, T4, T5> AS<AsT>(string tableName)
{ {
var entityName = typeof(AsT).Name; var entityName = typeof(AsT).Name;
@ -2660,6 +2696,12 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
public new ISugarQueryable<T, T2, T3, T4, T5,T6> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4, T5,T6>((t, t2, t3, t4, t5,T6) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(queryable.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6> AS<AsT>(string tableName) public new ISugarQueryable<T, T2, T3, T4, T5, T6> AS<AsT>(string tableName)
{ {
var entityName = typeof(AsT).Name; var entityName = typeof(AsT).Name;
@ -2989,6 +3031,12 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
public new ISugarQueryable<T, T2, T3, T4, T5, T6,T7> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4, T5, T6,T7>((t, t2, t3, t4, t5, T6,t7) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(queryable.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> AS<AsT>(string tableName) public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> AS<AsT>(string tableName)
{ {
var entityName = typeof(AsT).Name; var entityName = typeof(AsT).Name;
@ -3344,6 +3392,12 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7,T8> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4, T5, T6, T7,T8>((t, t2, t3, t4, t5, T6, t7,t8) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(queryable.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> AS<AsT>(string tableName) public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> AS<AsT>(string tableName)
{ {
var entityName = typeof(AsT).Name; var entityName = typeof(AsT).Name;
@ -3723,6 +3777,12 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8,T9> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4, T5, T6, T7, T8,T9>((t, t2, t3, t4, t5, T6, t7, t8,t9) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(queryable.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> AS<AsT>(string tableName) public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> AS<AsT>(string tableName)
{ {
var entityName = typeof(AsT).Name; var entityName = typeof(AsT).Name;
@ -4126,6 +4186,12 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9,T10> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9,T10>((t, t2, t3, t4, t5, T6, t7, t8, t9,t10) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(queryable.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> AS<AsT>(string tableName) public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> AS<AsT>(string tableName)
{ {
var entityName = typeof(AsT).Name; var entityName = typeof(AsT).Name;
@ -4553,6 +4619,12 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10,T11> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10,T11>((t, t2, t3, t4, t5, T6, t7, t8, t9,t10,t11) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(queryable.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> AS<AsT>(string tableName) public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> AS<AsT>(string tableName)
{ {
var entityName = typeof(AsT).Name; var entityName = typeof(AsT).Name;
@ -5006,6 +5078,12 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,T12> Clone()
{
var queryable = this.Context.Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,T12>((t, t2, t3, t4, t5, T6, t7, t8, t9, t10, t11,t12) => new object[] { }).WithCacheIF(IsCache, CacheTime);
base.CopyQueryBuilder(queryable.QueryBuilder);
return queryable;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> AS<AsT>(string tableName) public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> AS<AsT>(string tableName)
{ {
var entityName = typeof(AsT).Name; var entityName = typeof(AsT).Name;

View File

@ -97,8 +97,8 @@ namespace SqlSugar
public IUpdateable<T> IgnoreColumns(Expression<Func<T, object>> columns) public IUpdateable<T> IgnoreColumns(Expression<Func<T, object>> columns)
{ {
var ignoreColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it => this.SqlBuilder.GetNoTranslationColumnName(it)).ToList(); var ignoreColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it => this.SqlBuilder.GetNoTranslationColumnName(it).ToLower()).ToList();
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => !ignoreColumns.Contains(it.PropertyName)).ToList(); this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => !ignoreColumns.Contains(it.PropertyName.ToLower())).ToList();
return this; return this;
} }
@ -203,8 +203,33 @@ namespace SqlSugar
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => UpdateBuilder.SetValues.Any(v => SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase) || SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey == true).ToList(); this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => UpdateBuilder.SetValues.Any(v => SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase) || SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey == true).ToList();
return this; return this;
} }
[Obsolete("Use IUpdateable<T> IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false);")]
public IUpdateable<T> UpdateColumnsIF(bool isUpdateColumns, Expression<Func<T, object>> columns)
{
if (isUpdateColumns)
UpdateColumns(columns);
return this;
}
public IUpdateable<T> UpdateColumnsIF(bool isUpdateColumns, Expression<Func<T, bool>> columns)
{
if (isUpdateColumns)
UpdateColumns(columns);
return this;
}
public IUpdateable<T> UpdateColumnsIF(bool isUpdateColumns, Func<string, bool> updateColumMethod)
{
if (isUpdateColumns)
UpdateColumns(updateColumMethod);
return this;
}
public IUpdateable<T> UpdateColumnsIF(bool isUpdateColumns, Expression<Func<T, T>> columns)
{
if (isUpdateColumns)
UpdateColumns(columns);
return this;
}
[Obsolete("Use IUpdateable<T> IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false);")]
public IUpdateable<T> Where(bool isUpdateNull, bool IsOffIdentity = false) public IUpdateable<T> Where(bool isUpdateNull, bool IsOffIdentity = false)
{ {
UpdateBuilder.IsOffIdentity = IsOffIdentity; UpdateBuilder.IsOffIdentity = IsOffIdentity;
@ -499,7 +524,7 @@ namespace SqlSugar
} }
else if (versionColumn.PropertyInfo.PropertyType.IsIn(UtilConstants.ByteArrayType)) else if (versionColumn.PropertyInfo.PropertyType.IsIn(UtilConstants.ByteArrayType))
{ {
if (UtilMethods.GetLong((byte[])dbVersion)>UtilMethods.GetLong((byte[])currentVersion)) if (UtilMethods.GetLong((byte[])dbVersion) > UtilMethods.GetLong((byte[])currentVersion))
{ {
throw new VersionExceptions(string.Format("UpdateVersionValidation {0} Not the latest version ", versionColumn.PropertyName)); throw new VersionExceptions(string.Format("UpdateVersionValidation {0} Not the latest version ", versionColumn.PropertyName));
} }

View File

@ -28,6 +28,7 @@ namespace SqlSugar
result.IdentificationList.Add(queryBuilder.Take.ObjToString()); result.IdentificationList.Add(queryBuilder.Take.ObjToString());
result.IdentificationList.Add(queryBuilder.Skip.ObjToString()); result.IdentificationList.Add(queryBuilder.Skip.ObjToString());
result.IdentificationList.Add(queryBuilder.IsCount.ObjToString()); result.IdentificationList.Add(queryBuilder.IsCount.ObjToString());
result.IdentificationList.Add(queryBuilder.GetSelectValue.ObjToString().Length.ObjToString());
if (queryBuilder.Parameters.HasValue()) if (queryBuilder.Parameters.HasValue())
{ {
foreach (var item in queryBuilder.Parameters) foreach (var item in queryBuilder.Parameters)

View File

@ -94,5 +94,6 @@ namespace SqlSugar
public Action<PropertyInfo, EntityColumnInfo> EntityService{ get; set; } public Action<PropertyInfo, EntityColumnInfo> EntityService{ get; set; }
public Action<Type,EntityInfo> EntityNameService { get; set; }
} }
} }

View File

@ -12,6 +12,7 @@ namespace SqlSugar
private string _DbTableName; private string _DbTableName;
public string EntityName { get; set; } public string EntityName { get; set; }
public string DbTableName { get { return _DbTableName == null ? EntityName : _DbTableName; } set { _DbTableName = value; } } public string DbTableName { get { return _DbTableName == null ? EntityName : _DbTableName; } set { _DbTableName = value; } }
public string TableDescription { get; set; }
public Type Type { get; set; } public Type Type { get; set; }
public List<EntityColumnInfo> Columns { get; set; } public List<EntityColumnInfo> Columns { get; set; }
} }

View File

@ -10,9 +10,15 @@ namespace SqlSugar
public class SugarTable : Attribute { public class SugarTable : Attribute {
private SugarTable() { } private SugarTable() { }
public string TableName { get; set; } public string TableName { get; set; }
public string TableDescription { get; set; }
public SugarTable(string tableName) { public SugarTable(string tableName) {
this.TableName = tableName; this.TableName = tableName;
} }
public SugarTable(string tableName,string tableDescription)
{
this.TableName = tableName;
this.TableDescription = tableDescription;
}
} }
[AttributeUsage(AttributeTargets.Property , Inherited = true)] [AttributeUsage(AttributeTargets.Property , Inherited = true)]
public class SugarColumn : Attribute public class SugarColumn : Attribute

View File

@ -63,18 +63,29 @@ namespace SqlSugar
{ {
if (_Result == null) return null; if (_Result == null) return null;
if (IsUpper) if (IsUpper)
return _Result.ToString().ToUpper().TrimEnd(','); return _Result.ToString().ToUpper().Replace(UtilConstants.ReplaceCommaKey,",").TrimEnd(',');
else else
return _Result.ToString().TrimEnd(','); return _Result.ToString().Replace(UtilConstants.ReplaceCommaKey, ",").TrimEnd(',');
} }
#region functions #region functions
public string[] GetResultArray() public string[] GetResultArray()
{ {
if (this._Result == null) return null; if (this._Result == null) return null;
var reslut = new List<string>();
if (IsUpper) if (IsUpper)
return this.Result.ToString().ToUpper().TrimEnd(',').Split(','); reslut= this.Result.ToString().ToUpper().TrimEnd(',').Split(',').ToList();
else else
return this.Result.ToString().TrimEnd(',').Split(','); reslut= this.Result.ToString().TrimEnd(',').Split(',').ToList();
if (this.Result.ToString().Contains(UtilConstants.ReplaceCommaKey))
{
for (int i = 0; i < reslut.Count; i++)
{
reslut[i] = reslut[i].Replace(UtilConstants.ReplaceCommaKey, ",");
}
}
return reslut.ToArray();
} }
public string GetResultString() public string GetResultString()
@ -82,12 +93,12 @@ namespace SqlSugar
if (this._Result == null) return null; if (this._Result == null) return null;
if (this._ResolveExpressType.IsIn(ResolveExpressType.SelectMultiple, ResolveExpressType.SelectSingle)) if (this._ResolveExpressType.IsIn(ResolveExpressType.SelectMultiple, ResolveExpressType.SelectSingle))
{ {
return this.Result.ToString().TrimEnd(','); return this.Result.ToString().Replace(UtilConstants.ReplaceCommaKey, ",").TrimEnd(',');
} }
if (IsUpper) if (IsUpper)
return this.Result.ToString().ToUpper(); return this.Result.ToString().Replace(UtilConstants.ReplaceCommaKey, ",").ToUpper();
else else
return this.Result.ToString(); return this.Result.ToString().Replace(UtilConstants.ReplaceCommaKey, ",");
} }
public void TrimEnd() public void TrimEnd()

View File

@ -91,6 +91,10 @@ namespace SqlSugar
{ {
this.DbType = System.Data.DbType.String; this.DbType = System.Data.DbType.String;
} }
else if (type == UtilConstants.DateTimeOffsetType)
{
this.DbType = System.Data.DbType.DateTimeOffset;
}
} }
public SugarParameter(string name, object value, bool isOutput) public SugarParameter(string name, object value, bool isOutput)

View File

@ -124,7 +124,7 @@ namespace SqlSugar
{ {
base.Expression = item; base.Expression = item;
base.Start(); base.Start();
parameter.Context.Result.Append(base.Context.GetEqString(memberName, parameter.CommonTempData.ObjToString())); parameter.Context.Result.Append(base.Context.GetEqString(memberName, parameter.CommonTempData.ObjToString().Replace(",", UtilConstants.ReplaceCommaKey)));
} }
} }

View File

@ -42,11 +42,11 @@ namespace SqlSugar
{ {
if (i > 0) if (i > 0)
{ {
base.Context.Result.Append("," + parameter.CommonTempData.ObjToString() + ","); base.Context.Result.Append("," + parameter.CommonTempData.ObjToString().Replace(",",UtilConstants.ReplaceCommaKey) + ",");
} }
else else
{ {
base.Context.Result.Append(parameter.CommonTempData.ObjToString() + ","); base.Context.Result.Append(parameter.CommonTempData.ObjToString().Replace(",", UtilConstants.ReplaceCommaKey) + ",");
} }
++i; ++i;
} }

View File

@ -269,6 +269,7 @@ namespace SqlSugar
public SqlSugarClient CopyContext(bool isCopyEvents = false) public SqlSugarClient CopyContext(bool isCopyEvents = false)
{ {
var newClient = new SqlSugarClient(this.TranslateCopy(Context.CurrentConnectionConfig)); var newClient = new SqlSugarClient(this.TranslateCopy(Context.CurrentConnectionConfig));
newClient.CurrentConnectionConfig.ConfigureExternalServices=Context.CurrentConnectionConfig.ConfigureExternalServices;
newClient.MappingColumns = this.TranslateCopy(Context.MappingColumns); newClient.MappingColumns = this.TranslateCopy(Context.MappingColumns);
newClient.MappingTables = this.TranslateCopy(Context.MappingTables); newClient.MappingTables = this.TranslateCopy(Context.MappingTables);
newClient.IgnoreColumns = this.TranslateCopy(Context.IgnoreColumns); newClient.IgnoreColumns = this.TranslateCopy(Context.IgnoreColumns);

View File

@ -247,13 +247,14 @@ namespace SqlSugar
#endregion #endregion
#region Create Instance #region Create Instance
protected ISugarQueryable<T> CreateQueryable<T>() where T : class, new() protected ISugarQueryable<T> CreateQueryable<T>()
{ {
ISugarQueryable<T> result = InstanceFactory.GetQueryable<T>(this.CurrentConnectionConfig); ISugarQueryable<T> result = InstanceFactory.GetQueryable<T>(this.CurrentConnectionConfig);
return CreateQueryable(result); return CreateQueryable(result);
} }
protected ISugarQueryable<T> CreateQueryable<T>(ISugarQueryable<T> result) where T : class, new() protected ISugarQueryable<T> CreateQueryable<T>(ISugarQueryable<T> result)
{ {
Check.Exception(typeof(T).IsClass()==false|| typeof(T).GetConstructors().Length==0, "Queryable<{0}> Error ,{0} is invalid , need is a class,and can new().", typeof(T).Name);
var sqlBuilder = InstanceFactory.GetSqlbuilder(CurrentConnectionConfig); var sqlBuilder = InstanceFactory.GetSqlbuilder(CurrentConnectionConfig);
result.Context = this.Context; result.Context = this.Context;
result.SqlBuilder = sqlBuilder; result.SqlBuilder = sqlBuilder;
@ -308,7 +309,7 @@ namespace SqlSugar
return result; return result;
} }
protected void CreateQueryJoin<T>(Expression joinExpression, Type[] types, ISugarQueryable<T> queryable) where T : class, new() protected void CreateQueryJoin<T>(Expression joinExpression, Type[] types, ISugarQueryable<T> queryable)
{ {
this.CreateQueryable<T>(queryable); this.CreateQueryable<T>(queryable);
string shortName = string.Empty; string shortName = string.Empty;
@ -321,7 +322,7 @@ namespace SqlSugar
queryable.SqlBuilder.QueryBuilder.Parameters.AddRange(paramters); queryable.SqlBuilder.QueryBuilder.Parameters.AddRange(paramters);
} }
} }
protected void CreateEasyQueryJoin<T>(Expression joinExpression, Type[] types, ISugarQueryable<T> queryable) where T : class, new() protected void CreateEasyQueryJoin<T>(Expression joinExpression, Type[] types, ISugarQueryable<T> queryable)
{ {
this.CreateQueryable<T>(queryable); this.CreateQueryable<T>(queryable);
string shortName = string.Empty; string shortName = string.Empty;
@ -342,6 +343,7 @@ namespace SqlSugar
expressionContext.Resolve(joinExpression, ResolveExpressType.Join); expressionContext.Resolve(joinExpression, ResolveExpressType.Join);
int i = 0; int i = 0;
var joinArray = MergeJoinArray(expressionContext.Result.GetResultArray()); var joinArray = MergeJoinArray(expressionContext.Result.GetResultArray());
if (joinArray == null) return null;
parameters = expressionContext.Parameters; parameters = expressionContext.Parameters;
foreach (var entityType in entityTypeArray) foreach (var entityType in entityTypeArray)
{ {
@ -380,6 +382,7 @@ namespace SqlSugar
List<string> result = new List<string>(); List<string> result = new List<string>();
string joinValue = null; string joinValue = null;
int i = 0; int i = 0;
if (joinArray == null) return null;
foreach (var item in joinArray) foreach (var item in joinArray)
{ {
++i; ++i;

View File

@ -8,6 +8,7 @@ namespace SqlSugar
{ {
SqlSugarClient Context { get; set; } SqlSugarClient Context { get; set; }
ICodeFirst BackupTable(int maxBackupDataRows=int.MaxValue); ICodeFirst BackupTable(int maxBackupDataRows=int.MaxValue);
ICodeFirst SetStringDefaultLength(int length);
void InitTables(string entitiesNamespace); void InitTables(string entitiesNamespace);
void InitTables(string [] entitiesNamespaces); void InitTables(string [] entitiesNamespaces);
void InitTables(params Type [] entityTypes); void InitTables(params Type [] entityTypes);

View File

@ -37,6 +37,13 @@ namespace SqlSugar
bool BackupTable(string oldTableName, string newTableName, int maxBackupDataRows = int.MaxValue); bool BackupTable(string oldTableName, string newTableName, int maxBackupDataRows = int.MaxValue);
bool DropColumn(string tableName,string columnName); bool DropColumn(string tableName,string columnName);
bool RenameColumn(string tableName, string oldColumnName, string newColumnName); bool RenameColumn(string tableName, string oldColumnName, string newColumnName);
bool AddRemark(EntityInfo entity);
bool AddColumnRemark(string columnName,string tableName,string description);
bool DeleteColumnRemark(string columnName, string tableName);
bool IsAnyColumnRemark(string columnName, string tableName);
bool AddTableRemark( string tableName, string description);
bool DeleteTableRemark(string tableName);
bool IsAnyTableRemark(string tableName);
#endregion #endregion
} }
} }

View File

@ -14,7 +14,7 @@ namespace SqlSugar
SqlSugarClient Context { get; set; } SqlSugarClient Context { get; set; }
ISqlBuilder SqlBuilder { get; set; } ISqlBuilder SqlBuilder { get; set; }
QueryBuilder QueryBuilder { get; set; } QueryBuilder QueryBuilder { get; set; }
ISugarQueryable<T> Clone();
ISugarQueryable<T> AS<T2>(string tableName); ISugarQueryable<T> AS<T2>(string tableName);
ISugarQueryable<T> AS(string tableName); ISugarQueryable<T> AS(string tableName);
ISugarQueryable<T> With(string withString); ISugarQueryable<T> With(string withString);
@ -179,6 +179,7 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
new ISugarQueryable<T, T2> Clone();
new ISugarQueryable<T, T2> AS<AsT>(string tableName); new ISugarQueryable<T, T2> AS<AsT>(string tableName);
new ISugarQueryable<T, T2> AS(string tableName); new ISugarQueryable<T, T2> AS(string tableName);
new ISugarQueryable<T, T2> Filter(string FilterName, bool isDisabledGobalFilter = false); new ISugarQueryable<T, T2> Filter(string FilterName, bool isDisabledGobalFilter = false);
@ -246,6 +247,7 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
new ISugarQueryable<T, T2, T3> Clone();
new ISugarQueryable<T, T2, T3> AS<AsT>(string tableName); new ISugarQueryable<T, T2, T3> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3> AS(string tableName); new ISugarQueryable<T, T2, T3> AS(string tableName);
new ISugarQueryable<T, T2, T3> Filter(string FilterName, bool isDisabledGobalFilter = false); new ISugarQueryable<T, T2, T3> Filter(string FilterName, bool isDisabledGobalFilter = false);
@ -320,6 +322,7 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
new ISugarQueryable<T, T2, T3, T4> Clone();
new ISugarQueryable<T, T2, T3, T4> AS<AsT>(string tableName); new ISugarQueryable<T, T2, T3, T4> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4> AS(string tableName); new ISugarQueryable<T, T2, T3, T4> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4> Filter(string FilterName, bool isDisabledGobalFilter = false); new ISugarQueryable<T, T2, T3, T4> Filter(string FilterName, bool isDisabledGobalFilter = false);
@ -396,6 +399,7 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
new ISugarQueryable<T, T2, T3, T4, T5> Clone();
new ISugarQueryable<T, T2, T3, T4, T5> AS<AsT>(string tableName); new ISugarQueryable<T, T2, T3, T4, T5> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5> AS(string tableName); new ISugarQueryable<T, T2, T3, T4, T5> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5> Filter(string FilterName, bool isDisabledGobalFilter = false); new ISugarQueryable<T, T2, T3, T4, T5> Filter(string FilterName, bool isDisabledGobalFilter = false);
@ -470,6 +474,7 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
new ISugarQueryable<T, T2, T3, T4, T5, T6> Clone();
new ISugarQueryable<T, T2, T3, T4, T5, T6> AS<AsT>(string tableName); new ISugarQueryable<T, T2, T3, T4, T5, T6> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6> AS(string tableName); new ISugarQueryable<T, T2, T3, T4, T5, T6> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6> Filter(string FilterName, bool isDisabledGobalFilter = false); new ISugarQueryable<T, T2, T3, T4, T5, T6> Filter(string FilterName, bool isDisabledGobalFilter = false);
@ -549,6 +554,7 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Clone();
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> AS<AsT>(string tableName); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> AS(string tableName); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Filter(string FilterName, bool isDisabledGobalFilter = false); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Filter(string FilterName, bool isDisabledGobalFilter = false);
@ -633,6 +639,7 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Clone();
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> AS<AsT>(string tableName); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> AS(string tableName); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Filter(string FilterName, bool isDisabledGobalFilter = false); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Filter(string FilterName, bool isDisabledGobalFilter = false);
@ -724,6 +731,7 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Clone();
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> AS<AsT>(string tableName); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> AS(string tableName); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Filter(string FilterName, bool isDisabledGobalFilter = false); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Filter(string FilterName, bool isDisabledGobalFilter = false);
@ -818,6 +826,7 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Clone();
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> AS<AsT>(string tableName); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> AS(string tableName); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Filter(string FilterName, bool isDisabledGobalFilter = false); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Filter(string FilterName, bool isDisabledGobalFilter = false);
@ -917,6 +926,7 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Clone();
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> AS<AsT>(string tableName); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> AS(string tableName); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Filter(string FilterName, bool isDisabledGobalFilter = false); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Filter(string FilterName, bool isDisabledGobalFilter = false);
@ -1021,6 +1031,7 @@ namespace SqlSugar
#endregion #endregion
#region Other #region Other
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Clone();
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> AS<AsT>(string tableName); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> AS<AsT>(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> AS(string tableName); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> AS(string tableName);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Filter(string FilterName, bool isDisabledGobalFilter = false); new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Filter(string FilterName, bool isDisabledGobalFilter = false);

View File

@ -38,6 +38,10 @@ namespace SqlSugar
IUpdateable<T> UpdateColumns(Expression<Func<T, bool>> columns); IUpdateable<T> UpdateColumns(Expression<Func<T, bool>> columns);
IUpdateable<T> UpdateColumns(Func<string, bool> updateColumMethod); IUpdateable<T> UpdateColumns(Func<string, bool> updateColumMethod);
IUpdateable<T> UpdateColumns(Expression<Func<T, T>> columns); IUpdateable<T> UpdateColumns(Expression<Func<T, T>> columns);
IUpdateable<T> UpdateColumnsIF(bool isUpdateColumns,Expression<Func<T, object>> columns);
IUpdateable<T> UpdateColumnsIF(bool isUpdateColumns,Expression<Func<T, bool>> columns);
IUpdateable<T> UpdateColumnsIF(bool isUpdateColumns,Func<string, bool> updateColumMethod);
IUpdateable<T> UpdateColumnsIF(bool isUpdateColumns,Expression<Func<T, T>> columns);
IUpdateable<T> IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false); IUpdateable<T> IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false);
IUpdateable<T> IgnoreColumns(Expression<Func<T, object>> columns); IUpdateable<T> IgnoreColumns(Expression<Func<T, object>> columns);
IUpdateable<T> IgnoreColumns(Func<string, bool> ignoreColumMethod); IUpdateable<T> IgnoreColumns(Func<string, bool> ignoreColumMethod);

View File

@ -67,5 +67,10 @@ namespace SqlSugar
if (item.IsPrimarykey) if (item.IsPrimarykey)
this.Context.DbMaintenance.AddPrimaryKey(tableName, item.DbColumnName); this.Context.DbMaintenance.AddPrimaryKey(tableName, item.DbColumnName);
} }
internal DbColumnInfo GetEntityColumnToDbColumn(EntityInfo entity, string dbTableName, EntityColumnInfo item)
{
return EntityColumnToDbColumn(entity,dbTableName,item);
}
} }
} }

View File

@ -176,9 +176,72 @@ namespace SqlSugar
return "AUTO_INCREMENT"; return "AUTO_INCREMENT";
} }
} }
protected override string AddColumnRemarkSql
{
get
{
throw new NotSupportedException();
}
}
protected override string DeleteColumnRemarkSql
{
get
{
throw new NotSupportedException();
}
}
protected override string IsAnyColumnRemarkSql
{
get
{
throw new NotSupportedException();
}
}
protected override string AddTableRemarkSql
{
get
{
return "ALTER TABLE {0} COMMENT='{1}';";
}
}
protected override string DeleteTableRemarkSql
{
get
{
return "ALTER TABLE {0} COMMENT='';";
}
}
protected override string IsAnyTableRemarkSql
{
get
{
throw new NotSupportedException();
}
}
#endregion #endregion
#region Methods #region Methods
public override bool AddRemark(EntityInfo entity)
{
var db = this.Context;
db.DbMaintenance.AddTableRemark(entity.DbTableName, entity.TableDescription);
List<EntityColumnInfo> columns = entity.Columns.Where(it => it.IsIgnore == false).ToList();
foreach (var item in columns)
{
if (item.ColumnDescription != null)
{
var mySqlCodeFirst = this.Context.CodeFirst as MySqlCodeFirst;
string sql = GetUpdateColumnSql(entity.DbTableName, mySqlCodeFirst.GetEntityColumnToDbColumn(entity, entity.DbTableName, item)) + " " + (item.IsIdentity ? "AUTO_INCREMENT" : "") + " " + " COMMENT '" + item.ColumnDescription + "'";
db.Ado.ExecuteCommand(sql);
}
}
return true;
}
public override bool CreateTable(string tableName, List<DbColumnInfo> columns, bool isCreatePrimaryKey = true) public override bool CreateTable(string tableName, List<DbColumnInfo> columns, bool isCreatePrimaryKey = true)
{ {
if (columns.HasValue()) if (columns.HasValue())

View File

@ -169,6 +169,53 @@ namespace SqlSugar
return "IDENTITY(1,1)"; return "IDENTITY(1,1)";
} }
} }
protected override string AddColumnRemarkSql
{
get
{
return "comment on column {1}.{0} is '{2}';";
}
}
protected override string DeleteColumnRemarkSql
{
get
{
return "comment on column {1}.{0} is '';";
}
}
protected override string IsAnyColumnRemarkSql
{
get
{
return "select * from user_col_comments where Table_Name='{1}' AND COLUMN_NAME='{0}' order by column_name";
}
}
protected override string AddTableRemarkSql
{
get
{
return "comment on table {0} is '{1}';";
}
}
protected override string DeleteTableRemarkSql
{
get
{
return "comment on table {0} is '';";
}
}
protected override string IsAnyTableRemarkSql
{
get
{
return "select * from user_tab_comments where Table_Name='{0}'order by Table_Name";
}
}
#endregion #endregion
#region Methods #region Methods

View File

@ -200,6 +200,70 @@ namespace SqlSugar
return "IDENTITY(1,1)"; return "IDENTITY(1,1)";
} }
} }
protected override string AddColumnRemarkSql
{
get
{
return "EXECUTE sp_addextendedproperty N'MS_Description', '{2}', N'user', N'dbo', N'table', N'{1}', N'column', N'{0}'"; ;
}
}
protected override string DeleteColumnRemarkSql
{
get
{
return "EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','{1}','column',{0}";
}
}
protected override string IsAnyColumnRemarkSql
{
get
{
return @"SELECT" +
" A.name AS table_name," +
" B.name AS column_name," +
" C.value AS column_description" +
" FROM sys.tables A" +
" LEFT JOIN sys.extended_properties C ON C.major_id = A.object_id" +
" LEFT JOIN sys.columns B ON B.object_id = A.object_id AND C.minor_id = B.column_id" +
" INNER JOIN sys.schemas SC ON SC.schema_id = A.schema_id AND SC.name = 'dbo'"+
" WHERE A.name = '{1}' and b.name = '{0}'";
}
}
protected override string AddTableRemarkSql
{
get
{
return "EXECUTE sp_addextendedproperty N'MS_Description', '{1}', N'user', N'dbo', N'table', N'{0}', NULL, NULL";
}
}
protected override string DeleteTableRemarkSql
{
get
{
return "EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','{0}' ";
}
}
protected override string IsAnyTableRemarkSql
{
get
{
return @"SELECT C.class_desc
FROM sys.tables A
LEFT JOIN sys.extended_properties C ON C.major_id = A.object_id
INNER JOIN sys.schemas SC ON SC.schema_id=A.schema_id AND SC.name='dbo'
WHERE A.name = '{0}' AND minor_id=0";
}
}
#endregion #endregion
public override bool CreateTable(string tableName, List<DbColumnInfo> columns, bool isCreatePrimaryKey = true) public override bool CreateTable(string tableName, List<DbColumnInfo> columns, bool isCreatePrimaryKey = true)

View File

@ -162,9 +162,60 @@ namespace SqlSugar
return "AUTOINCREMENT"; return "AUTOINCREMENT";
} }
} }
protected override string AddColumnRemarkSql
{
get
{
throw new NotSupportedException();
}
}
protected override string DeleteColumnRemarkSql
{
get
{
throw new NotSupportedException();
}
}
protected override string IsAnyColumnRemarkSql
{
get
{
throw new NotSupportedException();
}
}
protected override string AddTableRemarkSql
{
get
{
throw new NotSupportedException();
}
}
protected override string DeleteTableRemarkSql
{
get
{
throw new NotSupportedException();
}
}
protected override string IsAnyTableRemarkSql
{
get
{
throw new NotSupportedException();
}
}
#endregion #endregion
#region Methods #region Methods
public override bool AddRemark(EntityInfo entity)
{
return true;
}
public override List<DbColumnInfo> GetColumnInfosByTableName(string tableName,bool isCache=true) public override List<DbColumnInfo> GetColumnInfosByTableName(string tableName,bool isCache=true)
{ {
string cacheKey = "DbMaintenanceProvider.GetColumnInfosByTableName." + this.SqlBuilder.GetNoTranslationColumnName(tableName).ToLower(); string cacheKey = "DbMaintenanceProvider.GetColumnInfosByTableName." + this.SqlBuilder.GetNoTranslationColumnName(tableName).ToLower();

View File

@ -103,7 +103,7 @@ namespace SqlSugar
/// <summary> /// <summary>
/// Lambda Query operation /// Lambda Query operation
/// </summary> /// </summary>
public virtual ISugarQueryable<T> Queryable<T>() where T : class, new() public virtual ISugarQueryable<T> Queryable<T>()
{ {
InitMppingInfo<T>(); InitMppingInfo<T>();
@ -113,7 +113,7 @@ namespace SqlSugar
/// <summary> /// <summary>
/// Lambda Query operation /// Lambda Query operation
/// </summary> /// </summary>
public virtual ISugarQueryable<T> Queryable<T>(string shortName) where T : class, new() public virtual ISugarQueryable<T> Queryable<T>(string shortName)
{ {
var queryable = Queryable<T>(); var queryable = Queryable<T>();
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
@ -129,7 +129,7 @@ namespace SqlSugar
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName; queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
return queryable; return queryable;
} }
public virtual ISugarQueryable<T, T2> Queryable<T, T2>(Expression<Func<T, T2, object[]>> joinExpression) where T : class, new() public virtual ISugarQueryable<T, T2> Queryable<T, T2>(Expression<Func<T, T2, object[]>> joinExpression)
{ {
InitMppingInfo<T, T2>(); InitMppingInfo<T, T2>();
var types = new Type[] { typeof(T2) }; var types = new Type[] { typeof(T2) };
@ -137,7 +137,7 @@ namespace SqlSugar
this.CreateQueryJoin(joinExpression, types, queryable); this.CreateQueryJoin(joinExpression, types, queryable);
return queryable; return queryable;
} }
public virtual ISugarQueryable<T, T2, T3> Queryable<T, T2, T3>(Expression<Func<T, T2, T3, object[]>> joinExpression) where T : class, new() public virtual ISugarQueryable<T, T2, T3> Queryable<T, T2, T3>(Expression<Func<T, T2, T3, object[]>> joinExpression)
{ {
InitMppingInfo<T, T2, T3>(); InitMppingInfo<T, T2, T3>();
var types = new Type[] { typeof(T2), typeof(T3) }; var types = new Type[] { typeof(T2), typeof(T3) };
@ -145,7 +145,7 @@ namespace SqlSugar
this.CreateQueryJoin(joinExpression, types, queryable); this.CreateQueryJoin(joinExpression, types, queryable);
return queryable; return queryable;
} }
public virtual ISugarQueryable<T, T2, T3, T4> Queryable<T, T2, T3, T4>(Expression<Func<T, T2, T3, T4, object[]>> joinExpression) where T : class, new() public virtual ISugarQueryable<T, T2, T3, T4> Queryable<T, T2, T3, T4>(Expression<Func<T, T2, T3, T4, object[]>> joinExpression)
{ {
InitMppingInfo<T, T2, T3, T4>(); InitMppingInfo<T, T2, T3, T4>();
var types = new Type[] { typeof(T2), typeof(T3), typeof(T4) }; var types = new Type[] { typeof(T2), typeof(T3), typeof(T4) };
@ -153,7 +153,7 @@ namespace SqlSugar
this.CreateQueryJoin(joinExpression, types, queryable); this.CreateQueryJoin(joinExpression, types, queryable);
return queryable; return queryable;
} }
public virtual ISugarQueryable<T, T2, T3, T4, T5> Queryable<T, T2, T3, T4, T5>(Expression<Func<T, T2, T3, T4, T5, object[]>> joinExpression) where T : class, new() public virtual ISugarQueryable<T, T2, T3, T4, T5> Queryable<T, T2, T3, T4, T5>(Expression<Func<T, T2, T3, T4, T5, object[]>> joinExpression)
{ {
InitMppingInfo<T, T2, T3, T4, T5>(); InitMppingInfo<T, T2, T3, T4, T5>();
var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5) }; var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5) };
@ -161,7 +161,7 @@ namespace SqlSugar
this.CreateQueryJoin(joinExpression, types, queryable); this.CreateQueryJoin(joinExpression, types, queryable);
return queryable; return queryable;
} }
public virtual ISugarQueryable<T, T2, T3, T4, T5, T6> Queryable<T, T2, T3, T4, T5, T6>(Expression<Func<T, T2, T3, T4, T5, T6, object[]>> joinExpression) where T : class, new() public virtual ISugarQueryable<T, T2, T3, T4, T5, T6> Queryable<T, T2, T3, T4, T5, T6>(Expression<Func<T, T2, T3, T4, T5, T6, object[]>> joinExpression)
{ {
InitMppingInfo<T, T2, T3, T4, T5, T6>(); InitMppingInfo<T, T2, T3, T4, T5, T6>();
var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6) }; var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6) };
@ -169,7 +169,7 @@ namespace SqlSugar
this.CreateQueryJoin(joinExpression, types, queryable); this.CreateQueryJoin(joinExpression, types, queryable);
return queryable; return queryable;
} }
public virtual ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Queryable<T, T2, T3, T4, T5, T6, T7>(Expression<Func<T, T2, T3, T4, T5, T6, T7, object[]>> joinExpression) where T : class, new() public virtual ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Queryable<T, T2, T3, T4, T5, T6, T7>(Expression<Func<T, T2, T3, T4, T5, T6, T7, object[]>> joinExpression)
{ {
InitMppingInfo<T, T2, T3, T4, T5, T6, T7>(); InitMppingInfo<T, T2, T3, T4, T5, T6, T7>();
var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7) }; var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7) };
@ -177,7 +177,7 @@ namespace SqlSugar
this.CreateQueryJoin(joinExpression, types, queryable); this.CreateQueryJoin(joinExpression, types, queryable);
return queryable; return queryable;
} }
public virtual ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Queryable<T, T2, T3, T4, T5, T6, T7, T8>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, object[]>> joinExpression) where T : class, new() public virtual ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Queryable<T, T2, T3, T4, T5, T6, T7, T8>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, object[]>> joinExpression)
{ {
InitMppingInfo<T, T2, T3, T4, T5, T6, T7, T8>(); InitMppingInfo<T, T2, T3, T4, T5, T6, T7, T8>();
var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8) }; var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8) };
@ -186,7 +186,7 @@ namespace SqlSugar
return queryable; return queryable;
} }
#region 9-12 #region 9-12
public virtual ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, object[]>> joinExpression) where T : class, new() public virtual ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, object[]>> joinExpression)
{ {
InitMppingInfo<T, T2, T3, T4, T5, T6, T7, T8, T9>(); InitMppingInfo<T, T2, T3, T4, T5, T6, T7, T8, T9>();
var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9) }; var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9) };
@ -194,7 +194,7 @@ namespace SqlSugar
this.CreateQueryJoin(joinExpression, types, queryable); this.CreateQueryJoin(joinExpression, types, queryable);
return queryable; return queryable;
} }
public virtual ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, object[]>> joinExpression) where T : class, new() public virtual ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, object[]>> joinExpression)
{ {
InitMppingInfo<T, T2, T3, T4, T5, T6, T7, T8, T9, T10>(); InitMppingInfo<T, T2, T3, T4, T5, T6, T7, T8, T9, T10>();
var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10) }; var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10) };
@ -202,7 +202,7 @@ namespace SqlSugar
this.CreateQueryJoin(joinExpression, types, queryable); this.CreateQueryJoin(joinExpression, types, queryable);
return queryable; return queryable;
} }
public virtual ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, object[]>> joinExpression) where T : class, new() public virtual ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, object[]>> joinExpression)
{ {
InitMppingInfo<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(); InitMppingInfo<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>();
var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10), typeof(T11) }; var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10), typeof(T11) };
@ -210,7 +210,7 @@ namespace SqlSugar
this.CreateQueryJoin(joinExpression, types, queryable); this.CreateQueryJoin(joinExpression, types, queryable);
return queryable; return queryable;
} }
public virtual ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, object[]>> joinExpression) where T : class, new() public virtual ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, object[]>> joinExpression)
{ {
InitMppingInfo<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(); InitMppingInfo<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>();
var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10), typeof(T11), typeof(T12) }; var types = new Type[] { typeof(T2), typeof(T3), typeof(T4), typeof(T5), typeof(T6), typeof(T7), typeof(T8), typeof(T9), typeof(T10), typeof(T11), typeof(T12) };
@ -350,7 +350,7 @@ namespace SqlSugar
var shortName1 = joinExpression.Parameters[0].Name; var shortName1 = joinExpression.Parameters[0].Name;
var sqlObj1 = joinQueryable1.ToSql(); var sqlObj1 = joinQueryable1.ToSql();
string sql1 = sqlObj1.Key; string sql1 = sqlObj1.Key;
UtilMethods.RepairReplicationParameters(ref sql1, sqlObj1.Value.ToArray(), 0); UtilMethods.RepairReplicationParameters(ref sql1, sqlObj1.Value.ToArray(), 0,"Join");
queryable.QueryBuilder.EntityName = sqlBuilder.GetPackTable(sql1, shortName1); ; queryable.QueryBuilder.EntityName = sqlBuilder.GetPackTable(sql1, shortName1); ;
queryable.QueryBuilder.Parameters.AddRange(sqlObj1.Value); queryable.QueryBuilder.Parameters.AddRange(sqlObj1.Value);
@ -358,7 +358,7 @@ namespace SqlSugar
var shortName2 = joinExpression.Parameters[1].Name; var shortName2 = joinExpression.Parameters[1].Name;
var sqlObj2 = joinQueryable2.ToSql(); var sqlObj2 = joinQueryable2.ToSql();
string sql2 = sqlObj2.Key; string sql2 = sqlObj2.Key;
UtilMethods.RepairReplicationParameters(ref sql2, sqlObj2.Value.ToArray(), 1); UtilMethods.RepairReplicationParameters(ref sql2, sqlObj2.Value.ToArray(), 1, "Join");
queryable.QueryBuilder.Parameters.AddRange(sqlObj2.Value); queryable.QueryBuilder.Parameters.AddRange(sqlObj2.Value);
var exp = queryable.QueryBuilder.GetExpressionValue(joinExpression, ResolveExpressType.WhereMultiple); var exp = queryable.QueryBuilder.GetExpressionValue(joinExpression, ResolveExpressType.WhereMultiple);
queryable.QueryBuilder.JoinQueryInfos.Add(new JoinQueryInfo() { JoinIndex = 0, JoinType = joinType, JoinWhere = exp.GetResultString(), TableName = sqlBuilder.GetPackTable(sql2, shortName2) }); queryable.QueryBuilder.JoinQueryInfos.Add(new JoinQueryInfo() { JoinIndex = 0, JoinType = joinType, JoinWhere = exp.GetResultString(), TableName = sqlBuilder.GetPackTable(sql2, shortName2) });
@ -377,7 +377,7 @@ namespace SqlSugar
{ {
var sqlObj = item.ToSql(); var sqlObj = item.ToSql();
string sql = sqlObj.Key; string sql = sqlObj.Key;
UtilMethods.RepairReplicationParameters(ref sql, sqlObj.Value.ToArray(), i); UtilMethods.RepairReplicationParameters(ref sql, sqlObj.Value.ToArray(), i, "UnionAll");
if (sqlObj.Value.HasValue()) if (sqlObj.Value.HasValue())
allItems.Add(new KeyValuePair<string, List<SugarParameter>>(sql, sqlObj.Value)); allItems.Add(new KeyValuePair<string, List<SugarParameter>>(sql, sqlObj.Value));
else else
@ -405,7 +405,7 @@ namespace SqlSugar
{ {
var sqlObj = item.ToSql(); var sqlObj = item.ToSql();
string sql = sqlObj.Key; string sql = sqlObj.Key;
UtilMethods.RepairReplicationParameters(ref sql, sqlObj.Value.ToArray(), i); UtilMethods.RepairReplicationParameters(ref sql, sqlObj.Value.ToArray(), i, "Union");
if (sqlObj.Value.HasValue()) if (sqlObj.Value.HasValue())
allItems.Add(new KeyValuePair<string, List<SugarParameter>>(sql, sqlObj.Value)); allItems.Add(new KeyValuePair<string, List<SugarParameter>>(sql, sqlObj.Value));
else else

View File

@ -13,6 +13,7 @@ namespace SqlSugar
internal const char SpaceChar =' '; internal const char SpaceChar =' ';
internal const string AssemblyName = "SqlSugar"; internal const string AssemblyName = "SqlSugar";
internal const string ReplaceKey = "{662E689B-17A1-4D06-9D27-F29EAB8BC3D6}"; internal const string ReplaceKey = "{662E689B-17A1-4D06-9D27-F29EAB8BC3D6}";
internal const string ReplaceCommaKey = "{112A689B-17A1-4A06-9D27-A39EAB8BC3D5}";
internal static Type IntType = typeof(int); internal static Type IntType = typeof(int);
internal static Type LongType = typeof(long); internal static Type LongType = typeof(long);
@ -26,6 +27,7 @@ namespace SqlSugar
internal static Type DecType = typeof(decimal); internal static Type DecType = typeof(decimal);
internal static Type StringType = typeof(string); internal static Type StringType = typeof(string);
internal static Type DateType = typeof(DateTime); internal static Type DateType = typeof(DateTime);
internal static Type DateTimeOffsetType = typeof(DateTimeOffset);
internal static Type ByteArrayType = typeof(byte[]); internal static Type ByteArrayType = typeof(byte[]);
internal static Type ModelType= typeof(ModelContext); internal static Type ModelType= typeof(ModelContext);
internal static Type DynamicType = typeof(ExpandoObject); internal static Type DynamicType = typeof(ExpandoObject);

View File

@ -68,7 +68,7 @@ namespace SqlSugar
return (T)Convert.ChangeType(obj, typeof(T)); return (T)Convert.ChangeType(obj, typeof(T));
} }
internal static void RepairReplicationParameters(ref string appendSql, SugarParameter[] parameters, int addIndex) internal static void RepairReplicationParameters(ref string appendSql, SugarParameter[] parameters, int addIndex,string append=null)
{ {
if (appendSql.HasValue() && parameters.HasValue()) if (appendSql.HasValue() && parameters.HasValue())
{ {
@ -76,7 +76,7 @@ namespace SqlSugar
{ {
//Compatible with.NET CORE parameters case //Compatible with.NET CORE parameters case
var name = parameter.ParameterName; var name = parameter.ParameterName;
string newName = name + addIndex; string newName = name +append+ addIndex;
appendSql = appendSql.Replace(name, newName); appendSql = appendSql.Replace(name, newName);
parameter.ParameterName = newName; parameter.ParameterName = newName;
} }