Browse Source

Synchronization code

pull/31/head
sunkaixuan 2 years ago
parent
commit
3e30501e1d
  1. 24
      Src/Asp.NetCore2/SqlSugar/Abstract/SaveableProvider/Storageable.cs
  2. 1
      Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs
  3. 18
      Src/Asp.NetCore2/SqlSugar/Entities/DefaultCustom.cs
  4. 3
      Src/Asp.NetCore2/SqlSugar/Interface/IStorageable.cs
  5. 2
      Src/Asp.NetCore2/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs

24
Src/Asp.NetCore2/SqlSugar/Abstract/SaveableProvider/Storageable.cs

@ -89,6 +89,20 @@ namespace SqlSugar
return this;
}
public IStorageable<T> DefaultAddElseUpdate()
{
var column = this.Context.EntityMaintenance.GetEntityInfo<T>().Columns.FirstOrDefault(it=>it.IsPrimarykey);
if (column == null) Check.ExceptionEasy("DefaultAddElseUpdate() need primary key", "DefaultAddElseUpdate()这个方法只能用于主键");
return this.SplitUpdate(it =>
{
var itemPkValue = column.PropertyInfo.GetValue(it.Item);
var defaultValue =UtilMethods.GetDefaultValue(column.PropertyInfo.PropertyType);
var result= itemPkValue != null && itemPkValue.ObjToString() != defaultValue.ObjToString();
return result;
}).SplitInsert(it => true);
}
public int ExecuteCommand()
{
var result = 0;
@ -107,6 +121,16 @@ namespace SqlSugar
result +=await x.AsUpdateable.ExecuteCommandAsync();
return result;
}
public int ExecuteSqlBulkCopy()
{
var storage = this.ToStorage();
return storage.BulkCopy() + storage.BulkUpdate();
}
public async Task<int> ExecuteSqlBulkCopyAsync()
{
var storage =await this.ToStorageAsync();
return await storage.BulkCopyAsync() + await storage.BulkUpdateAsync();
}
public StorageableResult<T> ToStorage()
{
if (whereFuncs == null || whereFuncs.Count == 0)

1
Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs

@ -139,6 +139,7 @@ namespace SqlSugar
CheckWhere();
PreToSql();
AutoRemoveDataCache();
Check.ExceptionEasy(this.UpdateParameterIsNull&&this.UpdateBuilder.DbColumnInfoList.Count() == this.UpdateObjs.Length && this.UpdateObjs.Length==this.UpdateBuilder.DbColumnInfoList.Count(it => it.IsPrimarykey), "The primary key cannot be updated", "主键不能更新,更新主键会对代码逻辑存在未知隐患,如果非要更新:建议你删除在插入或者新建一个没主键的类。");
Check.Exception(UpdateBuilder.WhereValues.IsNullOrEmpty() && GetPrimaryKeys().IsNullOrEmpty(), "You cannot have no primary key and no conditions");
string sql = UpdateBuilder.ToSqlString();
ValidateVersion();

18
Src/Asp.NetCore2/SqlSugar/Entities/DefaultCustom.cs

@ -32,4 +32,22 @@ namespace SqlSugar.DbConvert
return (T)Enum.Parse(undertype, str);
}
}
public class CommonPropertyConvert : ISugarDataConverter
{
public SugarParameter ParameterConverter<T>(object columnValue, int columnIndex)
{
var name = "@Common" + columnIndex;
Type undertype = SqlSugar.UtilMethods.GetUnderType(typeof(T));//获取没有nullable的枚举类型
return new SugarParameter(name, columnValue, undertype);
}
public T QueryConverter<T>(IDataRecord dr, int i)
{
var value = dr.GetValue(i);
return (T)UtilMethods.ChangeType2(value, typeof(T));
}
}
}

3
Src/Asp.NetCore2/SqlSugar/Interface/IStorageable.cs

@ -27,6 +27,9 @@ namespace SqlSugar
IStorageable<T> As(string tableName);
int ExecuteCommand();
Task<int> ExecuteCommandAsync();
int ExecuteSqlBulkCopy();
Task<int> ExecuteSqlBulkCopyAsync();
IStorageable<T> DefaultAddElseUpdate();
}
public class StorageableInfo<T> where T : class, new()

2
Src/Asp.NetCore2/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs

@ -203,6 +203,7 @@ namespace SqlSugar
{ typeof(bool[]),NpgsqlDbType.Boolean},
{typeof(DateTime[]),NpgsqlDbType.Date},
{typeof(float[]),NpgsqlDbType.Real},
{typeof(Guid[]),NpgsqlDbType.Uuid},
{ typeof(int?[]),NpgsqlDbType.Integer},
@ -213,6 +214,7 @@ namespace SqlSugar
{ typeof(byte?[]),NpgsqlDbType.Bytea},
{ typeof(bool?[]),NpgsqlDbType.Boolean},
{typeof(DateTime?[]),NpgsqlDbType.Date},
{typeof(Guid?[]),NpgsqlDbType.Uuid},
{ typeof(string[]), NpgsqlDbType.Text},

Loading…
Cancel
Save