Update .net core

This commit is contained in:
sunkaixuan
2018-07-29 11:49:54 +08:00
parent 936f11efa9
commit 8ba406a38d
9 changed files with 52 additions and 36 deletions

View File

@@ -73,6 +73,15 @@ namespace SqlSugar
return this; return this;
} }
public IUpdateable<T> IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false)
{
UpdateBuilder.IsOffIdentity = isOffIdentity;
if (this.UpdateBuilder.LambdaExpressions == null)
this.UpdateBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(this.Context.CurrentConnectionConfig);
this.UpdateBuilder.IsNoUpdateNull = ignoreAllNullColumns;
return this;
}
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)).ToList();
@@ -180,6 +189,7 @@ 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> Where(bool isUpdateNull, bool IsOffIdentity = false) public IUpdateable<T> Where(bool isUpdateNull, bool IsOffIdentity = false)
{ {

View File

@@ -16,6 +16,7 @@ namespace SqlSugar
Task<bool> ExecuteCommandHasChangeAsync(); Task<bool> ExecuteCommandHasChangeAsync();
IUpdateable<T> AS(string tableName); IUpdateable<T> AS(string tableName);
IUpdateable<T> With(string lockString); IUpdateable<T> With(string lockString);
[Obsolete("Use IUpdateable<T> IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false);")]
IUpdateable<T> Where(bool isNoUpdateNull,bool IsOffIdentity = false); IUpdateable<T> Where(bool isNoUpdateNull,bool IsOffIdentity = false);
IUpdateable<T> Where(Expression<Func<T, bool>> expression); IUpdateable<T> Where(Expression<Func<T, bool>> expression);
IUpdateable<T> Where(string whereSql,object parameters=null); IUpdateable<T> Where(string whereSql,object parameters=null);
@@ -37,6 +38,7 @@ 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> 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);
IUpdateable<T> ReSetValue(Expression<Func<T, bool>> setValueExpression); IUpdateable<T> ReSetValue(Expression<Func<T, bool>> setValueExpression);

View File

@@ -169,7 +169,7 @@ namespace SqlSugar
} }
else if (type == UtilConstants.ByteArrayType) else if (type == UtilConstants.ByteArrayType)
{ {
string bytesString = "0x" + BitConverter.ToString((byte[])value); string bytesString = "0x" + BitConverter.ToString((byte[])value).Replace("-", "");
return bytesString; return bytesString;
} }
else if (type.IsEnum()) else if (type.IsEnum())

View File

@@ -262,7 +262,7 @@ namespace SqlSugar
} }
else if (type == UtilConstants.ByteArrayType) else if (type == UtilConstants.ByteArrayType)
{ {
string bytesString = "0x" + BitConverter.ToString((byte[])value); string bytesString = "0x" + BitConverter.ToString((byte[])value).Replace("-", "");
return bytesString; return bytesString;
} }
else if (type.IsEnum()) else if (type.IsEnum())

View File

@@ -67,22 +67,21 @@ namespace SqlSugar
this.Context.MappingTables.Add(entityName, tableName); this.Context.MappingTables.Add(entityName, tableName);
return this; ; return this; ;
} }
public IUpdateable<T> IgnoreColumns(bool IgnoreAllNullColumns, bool IsOffIdentity = false)
{
UpdateBuilder.IsOffIdentity = IsOffIdentity;
if (this.UpdateBuilder.LambdaExpressions == null)
this.UpdateBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(this.Context.CurrentConnectionConfig);
this.UpdateBuilder.IsNoUpdateNull = IgnoreAllNullColumns;
return this;
}
public IUpdateable<T> IgnoreColumns(Func<string, bool> ignoreColumMethod) public IUpdateable<T> IgnoreColumns(Func<string, bool> ignoreColumMethod)
{ {
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => !ignoreColumMethod(it.PropertyName)).ToList(); this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => !ignoreColumMethod(it.PropertyName)).ToList();
return this; return this;
} }
public IUpdateable<T> IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false)
{
UpdateBuilder.IsOffIdentity = isOffIdentity;
if (this.UpdateBuilder.LambdaExpressions == null)
this.UpdateBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(this.Context.CurrentConnectionConfig);
this.UpdateBuilder.IsNoUpdateNull = ignoreAllNullColumns;
return this;
}
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)).ToList();
@@ -148,7 +147,8 @@ namespace SqlSugar
return this; return this;
} }
public IUpdateable<T> UpdateColumns(Expression<Func<T, bool>> columns) { public IUpdateable<T> UpdateColumns(Expression<Func<T, bool>> columns)
{
var binaryExp = columns.Body as BinaryExpression; var binaryExp = columns.Body as BinaryExpression;
Check.Exception(!binaryExp.NodeType.IsIn(ExpressionType.Equal), "No support {0}", columns.ToString()); Check.Exception(!binaryExp.NodeType.IsIn(ExpressionType.Equal), "No support {0}", columns.ToString());
Check.Exception(!(binaryExp.Left is MemberExpression) && !(binaryExp.Left is UnaryExpression), "No support {0}", columns.ToString()); Check.Exception(!(binaryExp.Left is MemberExpression) && !(binaryExp.Left is UnaryExpression), "No support {0}", columns.ToString());
@@ -190,8 +190,8 @@ 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);")]
[Obsolete]
public IUpdateable<T> Where(bool isUpdateNull, bool IsOffIdentity = false) public IUpdateable<T> Where(bool isUpdateNull, bool IsOffIdentity = false)
{ {
UpdateBuilder.IsOffIdentity = IsOffIdentity; UpdateBuilder.IsOffIdentity = IsOffIdentity;
@@ -200,7 +200,6 @@ namespace SqlSugar
this.UpdateBuilder.IsNoUpdateNull = isUpdateNull; this.UpdateBuilder.IsNoUpdateNull = isUpdateNull;
return this; return this;
} }
public IUpdateable<T> Where(Expression<Func<T, bool>> expression) public IUpdateable<T> Where(Expression<Func<T, bool>> expression)
{ {
var expResult = UpdateBuilder.GetExpressionValue(expression, ResolveExpressType.WhereSingle); var expResult = UpdateBuilder.GetExpressionValue(expression, ResolveExpressType.WhereSingle);
@@ -210,10 +209,12 @@ namespace SqlSugar
public IUpdateable<T> Where(string whereSql, object parameters = null) public IUpdateable<T> Where(string whereSql, object parameters = null)
{ {
if (whereSql.HasValue()) { if (whereSql.HasValue())
{
UpdateBuilder.WhereValues.Add(whereSql); UpdateBuilder.WhereValues.Add(whereSql);
} }
if (parameters != null) { if (parameters != null)
{
UpdateBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); UpdateBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters));
} }
return this; return this;
@@ -294,6 +295,7 @@ namespace SqlSugar
{ {
foreach (var column in EntityInfo.Columns) foreach (var column in EntityInfo.Columns)
{ {
if (column.IsIgnore) continue;
var columnInfo = new DbColumnInfo() var columnInfo = new DbColumnInfo()
{ {
Value = column.PropertyInfo.GetValue(item, null), Value = column.PropertyInfo.GetValue(item, null),
@@ -329,7 +331,8 @@ namespace SqlSugar
foreach (var item in this.UpdateBuilder.DbColumnInfoList) foreach (var item in this.UpdateBuilder.DbColumnInfoList)
{ {
if (this.UpdateBuilder.Parameters == null) this.UpdateBuilder.Parameters = new List<SugarParameter>(); if (this.UpdateBuilder.Parameters == null) this.UpdateBuilder.Parameters = new List<SugarParameter>();
if (this.UpdateBuilder.SetValues.Any(it =>this.SqlBuilder.GetNoTranslationColumnName(it.Key) == item.PropertyName)) { if (this.UpdateBuilder.SetValues.Any(it => this.SqlBuilder.GetNoTranslationColumnName(it.Key) == item.PropertyName))
{
continue; continue;
} }
this.UpdateBuilder.Parameters.Add(new SugarParameter(this.SqlBuilder.SqlParameterKeyWord + item.DbColumnName, item.Value, item.PropertyType)); this.UpdateBuilder.Parameters.Add(new SugarParameter(this.SqlBuilder.SqlParameterKeyWord + item.DbColumnName, item.Value, item.PropertyType));

View File

@@ -40,7 +40,7 @@ namespace SqlSugar
{ {
var exp = expression as MethodCallExpression; var exp = expression as MethodCallExpression;
var argExp= exp.Arguments[0]; var argExp= exp.Arguments[0];
var result= "WHERE "+SubTools.GetMethodValue(Context, argExp, ResolveExpressType.WhereMultiple); var result= "WHERE "+SubTools.GetMethodValue(Context, argExp, ResolveExpressType.WhereMultiple);;
var selfParameterName = Context.GetTranslationColumnName((argExp as LambdaExpression).Parameters.First().Name)+UtilConstants.Dot; var selfParameterName = Context.GetTranslationColumnName((argExp as LambdaExpression).Parameters.First().Name)+UtilConstants.Dot;
result = result.Replace(selfParameterName,string.Empty); result = result.Replace(selfParameterName,string.Empty);
return result; return result;

View File

@@ -278,6 +278,7 @@ namespace SqlSugar
newClient.Ado.LogEventStarting = Context.Ado.LogEventStarting; newClient.Ado.LogEventStarting = Context.Ado.LogEventStarting;
newClient.Ado.LogEventCompleted = Context.Ado.LogEventCompleted; newClient.Ado.LogEventCompleted = Context.Ado.LogEventCompleted;
newClient.Ado.ProcessingEventStartingSQL = Context.Ado.ProcessingEventStartingSQL; newClient.Ado.ProcessingEventStartingSQL = Context.Ado.ProcessingEventStartingSQL;
newClient.QueryFilter = Context.QueryFilter;
} }
return newClient; return newClient;
} }

View File

@@ -14,7 +14,7 @@ namespace SqlSugar
{ {
get get
{ {
var result = _Context; var result = _Context; ;
if (CurrentConnectionConfig.IsShardSameThread) if (CurrentConnectionConfig.IsShardSameThread)
{ {
if (CallContext.ContextList.Value.IsNullOrEmpty()) if (CallContext.ContextList.Value.IsNullOrEmpty())
@@ -268,7 +268,7 @@ namespace SqlSugar
protected InsertableProvider<T> CreateInsertable<T>(T[] insertObjs) where T : class, new() protected InsertableProvider<T> CreateInsertable<T>(T[] insertObjs) where T : class, new()
{ {
var result = InstanceFactory.GetInsertableProvider<T>(this.CurrentConnectionConfig); var result = InstanceFactory.GetInsertableProvider<T>(this.CurrentConnectionConfig);
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); ;
result.Context = this.Context; result.Context = this.Context;
result.EntityInfo = this.Context.EntityMaintenance.GetEntityInfo<T>(); result.EntityInfo = this.Context.EntityMaintenance.GetEntityInfo<T>();
result.SqlBuilder = sqlBuilder; result.SqlBuilder = sqlBuilder;
@@ -283,7 +283,7 @@ namespace SqlSugar
protected DeleteableProvider<T> CreateDeleteable<T>() where T : class, new() protected DeleteableProvider<T> CreateDeleteable<T>() where T : class, new()
{ {
var result = InstanceFactory.GetDeleteableProvider<T>(this.CurrentConnectionConfig); var result = InstanceFactory.GetDeleteableProvider<T>(this.CurrentConnectionConfig);
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); ;
result.Context = this.Context; result.Context = this.Context;
result.SqlBuilder = sqlBuilder; result.SqlBuilder = sqlBuilder;
sqlBuilder.DeleteBuilder = result.DeleteBuilder = InstanceFactory.GetDeleteBuilder(this.CurrentConnectionConfig); sqlBuilder.DeleteBuilder = result.DeleteBuilder = InstanceFactory.GetDeleteBuilder(this.CurrentConnectionConfig);
@@ -295,7 +295,7 @@ namespace SqlSugar
protected UpdateableProvider<T> CreateUpdateable<T>(T[] UpdateObjs) where T : class, new() protected UpdateableProvider<T> CreateUpdateable<T>(T[] UpdateObjs) where T : class, new()
{ {
var result = InstanceFactory.GetUpdateableProvider<T>(this.CurrentConnectionConfig); var result = InstanceFactory.GetUpdateableProvider<T>(this.CurrentConnectionConfig);
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); ;
result.Context = this.Context; result.Context = this.Context;
result.EntityInfo = this.Context.EntityMaintenance.GetEntityInfo<T>(); result.EntityInfo = this.Context.EntityMaintenance.GetEntityInfo<T>();
result.SqlBuilder = sqlBuilder; result.SqlBuilder = sqlBuilder;
@@ -400,7 +400,7 @@ namespace SqlSugar
result.Add(joinValue); result.Add(joinValue);
} }
} }
return result.ToArray(); return result.ToArray(); ;
} }
protected Dictionary<string, string> GetEasyJoinInfo(Expression joinExpression, ref string shortName, ISqlBuilder builder, params Type[] entityTypeArray) protected Dictionary<string, string> GetEasyJoinInfo(Expression joinExpression, ref string shortName, ISqlBuilder builder, params Type[] entityTypeArray)

View File

@@ -16,7 +16,7 @@ namespace SqlSugar
Task<bool> ExecuteCommandHasChangeAsync(); Task<bool> ExecuteCommandHasChangeAsync();
IUpdateable<T> AS(string tableName); IUpdateable<T> AS(string tableName);
IUpdateable<T> With(string lockString); IUpdateable<T> With(string lockString);
[Obsolete] [Obsolete("Use IUpdateable<T> IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false);")]
IUpdateable<T> Where(bool isNoUpdateNull,bool IsOffIdentity = false); IUpdateable<T> Where(bool isNoUpdateNull,bool IsOffIdentity = false);
IUpdateable<T> Where(Expression<Func<T, bool>> expression); IUpdateable<T> Where(Expression<Func<T, bool>> expression);
IUpdateable<T> Where(string whereSql,object parameters=null); IUpdateable<T> Where(string whereSql,object parameters=null);
@@ -33,12 +33,12 @@ namespace SqlSugar
/// </summary> /// </summary>
/// <param name="columns"></param> /// <param name="columns"></param>
/// <returns></returns> /// <returns></returns>
IUpdateable<T> IgnoreColumns(bool IgnoreAllNullColumns, bool IsOffIdentity = false);
IUpdateable<T> WhereColumns(Expression<Func<T, object>> columns); IUpdateable<T> WhereColumns(Expression<Func<T, object>> columns);
IUpdateable<T> UpdateColumns(Expression<Func<T, object>> columns); IUpdateable<T> UpdateColumns(Expression<Func<T, object>> columns);
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> 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);
IUpdateable<T> ReSetValue(Expression<Func<T, bool>> setValueExpression); IUpdateable<T> ReSetValue(Expression<Func<T, bool>> setValueExpression);