Update Core

This commit is contained in:
sunkaixuan
2018-02-11 17:26:42 +08:00
parent 55029ed2cf
commit 2e9a331e3c
64 changed files with 811 additions and 417 deletions

View File

@@ -37,7 +37,7 @@ namespace OrmTest.Demo
private static void ConditionalModel()
{
var db = GetInstance();
List<ConditionalModel> conModels = new List<ConditionalModel>();
List<IConditionalModel> conModels = new List<IConditionalModel>();
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "1" });
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Like, FieldValue = "1" });
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.IsNullOrEmpty });

View File

@@ -87,12 +87,7 @@ namespace SqlSugar
columns.Add(dbColumnInfo);
}
}
this.Context.DbMaintenance.CreateTable(tableName, columns);
var pkColumns = entityInfo.Columns.Where(it => it.IsPrimarykey).ToList();
foreach (var item in pkColumns)
{
this.Context.DbMaintenance.AddPrimaryKey(tableName, item.DbColumnName);
}
this.Context.DbMaintenance.CreateTable(tableName, columns,true);
}
public virtual void ExistLogic(EntityInfo entityInfo)
{

View File

@@ -58,50 +58,50 @@ namespace SqlSugar
protected List<T> GetKeyValueList<T>(Type type, IDataReader dataReader)
{
List<T> reval = new List<T>();
List<T> result = new List<T>();
while (dataReader.Read())
{
if (UtilConstants.DicOO == type)
{
var kv = new KeyValuePair<object, object>(dataReader.GetValue(0), dataReader.GetValue(1));
reval.Add((T)Convert.ChangeType(kv, typeof(KeyValuePair<object, object>)));
result.Add((T)Convert.ChangeType(kv, typeof(KeyValuePair<object, object>)));
}
else if (UtilConstants.DicIS == type)
{
var kv = new KeyValuePair<int, string>(dataReader.GetValue(0).ObjToInt(), dataReader.GetValue(1).ObjToString());
reval.Add((T)Convert.ChangeType(kv, typeof(KeyValuePair<int, string>)));
result.Add((T)Convert.ChangeType(kv, typeof(KeyValuePair<int, string>)));
}
else if (UtilConstants.Dicii == type)
{
var kv = new KeyValuePair<int, int>(dataReader.GetValue(0).ObjToInt(), dataReader.GetValue(1).ObjToInt());
reval.Add((T)Convert.ChangeType(kv, typeof(KeyValuePair<int, int>)));
result.Add((T)Convert.ChangeType(kv, typeof(KeyValuePair<int, int>)));
}
else if (UtilConstants.DicSi == type)
{
var kv = new KeyValuePair<string, int>(dataReader.GetValue(0).ObjToString(), dataReader.GetValue(1).ObjToInt());
reval.Add((T)Convert.ChangeType(kv, typeof(KeyValuePair<string, int>)));
result.Add((T)Convert.ChangeType(kv, typeof(KeyValuePair<string, int>)));
}
else if (UtilConstants.DicSo == type)
{
var kv = new KeyValuePair<string, object>(dataReader.GetValue(0).ObjToString(), dataReader.GetValue(1));
reval.Add((T)Convert.ChangeType(kv, typeof(KeyValuePair<string, object>)));
result.Add((T)Convert.ChangeType(kv, typeof(KeyValuePair<string, object>)));
}
else if (UtilConstants.DicSS == type)
{
var kv = new KeyValuePair<string, string>(dataReader.GetValue(0).ObjToString(), dataReader.GetValue(1).ObjToString());
reval.Add((T)Convert.ChangeType(kv, typeof(KeyValuePair<string, string>)));
result.Add((T)Convert.ChangeType(kv, typeof(KeyValuePair<string, string>)));
}
else
{
Check.Exception(true, ErrorMessage.NotSupportedDictionary);
}
}
return reval;
return result;
}
protected List<T> GetArrayList<T>(Type type, IDataReader dataReader)
{
List<T> reval = new List<T>();
List<T> result = new List<T>();
int count = dataReader.FieldCount;
var childType = type.GetElementType();
while (dataReader.Read())
@@ -112,30 +112,30 @@ namespace SqlSugar
array[i] = Convert.ChangeType(dataReader.GetValue(i), childType);
}
if (childType == UtilConstants.StringType)
reval.Add((T)Convert.ChangeType(array.Select(it => it.ObjToString()).ToArray(), type));
result.Add((T)Convert.ChangeType(array.Select(it => it.ObjToString()).ToArray(), type));
else if (childType == UtilConstants.ObjType)
reval.Add((T)Convert.ChangeType(array.Select(it => it == DBNull.Value ? null : (object)it).ToArray(), type));
result.Add((T)Convert.ChangeType(array.Select(it => it == DBNull.Value ? null : (object)it).ToArray(), type));
else if (childType == UtilConstants.BoolType)
reval.Add((T)Convert.ChangeType(array.Select(it => it.ObjToBool()).ToArray(), type));
result.Add((T)Convert.ChangeType(array.Select(it => it.ObjToBool()).ToArray(), type));
else if (childType == UtilConstants.ByteType)
reval.Add((T)Convert.ChangeType(array.Select(it => it == DBNull.Value ? 0 : (byte)it).ToArray(), type));
result.Add((T)Convert.ChangeType(array.Select(it => it == DBNull.Value ? 0 : (byte)it).ToArray(), type));
else if (childType == UtilConstants.DecType)
reval.Add((T)Convert.ChangeType(array.Select(it => it.ObjToDecimal()).ToArray(), type));
result.Add((T)Convert.ChangeType(array.Select(it => it.ObjToDecimal()).ToArray(), type));
else if (childType == UtilConstants.GuidType)
reval.Add((T)Convert.ChangeType(array.Select(it => it == DBNull.Value ? Guid.Empty : (Guid)it).ToArray(), type));
result.Add((T)Convert.ChangeType(array.Select(it => it == DBNull.Value ? Guid.Empty : (Guid)it).ToArray(), type));
else if (childType == UtilConstants.DateType)
reval.Add((T)Convert.ChangeType(array.Select(it => it == DBNull.Value ? DateTime.MinValue : (DateTime)it).ToArray(), type));
result.Add((T)Convert.ChangeType(array.Select(it => it == DBNull.Value ? DateTime.MinValue : (DateTime)it).ToArray(), type));
else if (childType == UtilConstants.IntType)
reval.Add((T)Convert.ChangeType(array.Select(it => it.ObjToInt()).ToArray(), type));
result.Add((T)Convert.ChangeType(array.Select(it => it.ObjToInt()).ToArray(), type));
else
Check.Exception(true, ErrorMessage.NotSupportedArray);
}
return reval;
return result;
}
protected List<T> GetValueTypeList<T>(Type type, IDataReader dataReader)
{
List<T> reval = new List<T>();
List<T> result = new List<T>();
while (dataReader.Read())
{
var value = dataReader.GetValue(0);
@@ -145,18 +145,18 @@ namespace SqlSugar
}
if (value == DBNull.Value)
{
reval.Add(default(T));
result.Add(default(T));
}
else if (type.IsEnum)
{
reval.Add((T)Enum.Parse(type, value.ObjToString()));
result.Add((T)Enum.Parse(type, value.ObjToString()));
}
else
{
reval.Add((T)Convert.ChangeType(value, UtilMethods.GetUnderType(type)));
result.Add((T)Convert.ChangeType(value, UtilMethods.GetUnderType(type)));
}
}
return reval;
return result;
}
}
}

View File

@@ -37,12 +37,12 @@ namespace SqlSugar
}
public virtual string GetConvertString(string dbTypeName)
{
string reval = string.Empty;
string result = string.Empty;
switch (dbTypeName.ToLower())
{
#region Int
case "int":
reval = "Convert.ToInt32";
result = "Convert.ToInt32";
break;
#endregion
@@ -53,19 +53,19 @@ namespace SqlSugar
case "nvarchar":
case "varchar":
case "text":
reval = "Convert.ToString";
result = "Convert.ToString";
break;
#endregion
#region Long
case "bigint":
reval = "Convert.ToInt64";
result = "Convert.ToInt64";
break;
#endregion
#region Bool
case "bit":
reval = "Convert.ToBoolean";
result = "Convert.ToBoolean";
break;
#endregion
@@ -76,7 +76,7 @@ namespace SqlSugar
case "datetime":
case "date":
case "datetime2":
reval = "Convert.ToDateTime";
result = "Convert.ToDateTime";
break;
#endregion
@@ -86,13 +86,13 @@ namespace SqlSugar
case "numeric":
case "money":
case "decimal":
reval = "Convert.ToDecimal";
result = "Convert.ToDecimal";
break;
#endregion
#region Double
case "float":
reval = "Convert.ToDouble";
result = "Convert.ToDouble";
break;
#endregion
@@ -100,42 +100,42 @@ namespace SqlSugar
case "varbinary":
case "binary":
case "image":
reval = "byte[]";
result = "byte[]";
break;
#endregion
#region Float
case "real":
reval = "Convert.ToSingle";
result = "Convert.ToSingle";
break;
#endregion
#region Short
case "smallint":
reval = "Convert.ToInt16";
result = "Convert.ToInt16";
break;
#endregion
#region Byte
case "tinyint":
reval = "Convert.ToByte";
result = "Convert.ToByte";
break;
#endregion
#region Guid
case "uniqueidentifier":
reval = "Guid.Parse";
result = "Guid.Parse";
break;
#endregion
#region Null
default:
reval = null;
result = null;
break;
#endregion
}
return reval;
return result;
}
public virtual string GetPropertyTypeName(string dbTypeName)
{
@@ -187,7 +187,7 @@ namespace SqlSugar
{
return GetKeyValueList<T>(type, dataReader);
}
else if (type.IsValueType() || type == UtilConstants.StringType)
else if (type.IsValueType() || type == UtilConstants.StringType||type== UtilConstants.ByteArrayType)
{
return GetValueTypeList<T>(type, dataReader);
}

View File

@@ -109,7 +109,7 @@ namespace SqlSugar
{
if (!ReaderKeys.Contains(mappInfo.DbColumnName))
{
fileName = ReaderKeys.First(it => it.Equals(mappInfo.DbColumnName, StringComparison.CurrentCultureIgnoreCase)|| it.Equals(mappInfo.PropertyName, StringComparison.CurrentCultureIgnoreCase));
fileName = ReaderKeys.FirstOrDefault(it => it.Equals(mappInfo.DbColumnName, StringComparison.CurrentCultureIgnoreCase)|| it.Equals(mappInfo.PropertyName, StringComparison.CurrentCultureIgnoreCase));
}
else
{
@@ -131,7 +131,7 @@ namespace SqlSugar
{
if (this.ReaderKeys.Any(it => it.Equals(fileName, StringComparison.CurrentCultureIgnoreCase)))
{
BindField(generator, result, propertyInfo, ReaderKeys.Single(it => it.Equals(fileName, StringComparison.CurrentCultureIgnoreCase)));
BindField(generator, result, propertyInfo, ReaderKeys.First(it => it.Equals(fileName, StringComparison.CurrentCultureIgnoreCase)));
}
}
}
@@ -223,7 +223,7 @@ namespace SqlSugar
if (bindProperyTypeName.IsContainsIn("int", "int32"))
method = isNullableType ? getConvertInt32 : getInt32;
if (bindProperyTypeName.IsContainsIn("int64"))
method = isNullableType ? getConvertInt32 : getInt32;
method = isNullableType ? getConvertInt64 : getInt64;
if (bindProperyTypeName.IsContainsIn("byte"))
method = isNullableType ? getConvertByte : getByte;
if (bindProperyTypeName.IsContainsIn("int16"))

View File

@@ -11,8 +11,8 @@ namespace SqlSugar
#region Common Extensions
public static Guid GetStringGuid(this IDataRecord dr, int i)
{
var reval = Guid.Parse(dr.GetValue(i).ToString());
return reval;
var result = Guid.Parse(dr.GetValue(i).ToString());
return result;
}
public static Guid? GetConvertStringGuid(this IDataRecord dr, int i)
@@ -21,14 +21,14 @@ namespace SqlSugar
{
return Guid.Empty;
}
var reval = Guid.Parse(dr.GetValue(i).ToString());
return reval;
var result = Guid.Parse(dr.GetValue(i).ToString());
return result;
}
public static bool? GetConvertBoolean(this IDataRecord dr, int i)
{
var reval = dr.GetBoolean(i);
return reval;
var result = dr.GetBoolean(i);
return result;
}
public static byte? GetConvertByte(this IDataRecord dr, int i)
@@ -37,8 +37,8 @@ namespace SqlSugar
{
return null;
}
var reval = dr.GetByte(i);
return reval;
var result = dr.GetByte(i);
return result;
}
public static char? GetConvertChar(this IDataRecord dr, int i)
@@ -47,18 +47,18 @@ namespace SqlSugar
{
return null;
}
var reval = dr.GetChar(i);
return reval;
var result = dr.GetChar(i);
return result;
}
public static DateTime? GetConvertDateTime(this IDataRecord dr, int i)
{
var reval = dr.GetDateTime(i);
if (reval == DateTime.MinValue)
var result = dr.GetDateTime(i);
if (result == DateTime.MinValue)
{
return null; ;
}
return reval;
return result;
}
public static decimal? GetConvertDecimal(this IDataRecord dr, int i)
@@ -67,8 +67,8 @@ namespace SqlSugar
{
return null;
}
var reval = dr.GetDecimal(i);
return reval;
var result = dr.GetDecimal(i);
return result;
}
@@ -78,8 +78,8 @@ namespace SqlSugar
{
return null;
}
var reval = dr.GetDouble(i);
return reval;
var result = dr.GetDouble(i);
return result;
}
public static Guid? GetConvertGuid(this IDataRecord dr, int i)
@@ -88,8 +88,8 @@ namespace SqlSugar
{
return null;
}
var reval = dr.GetGuid(i);
return reval;
var result = dr.GetGuid(i);
return result;
}
public static short? GetConvertInt16(this IDataRecord dr, int i)
@@ -98,8 +98,8 @@ namespace SqlSugar
{
return null;
}
var reval = dr.GetInt16(i);
return reval;
var result = dr.GetInt16(i);
return result;
}
public static Int32? GetConvertInt32(this IDataRecord dr, int i)
@@ -108,8 +108,8 @@ namespace SqlSugar
{
return null;
}
var reval = dr.GetInt32(i);
return reval;
var result = dr.GetInt32(i);
return result;
}
public static long? GetConvetInt64(this IDataRecord dr, int i)
@@ -118,8 +118,8 @@ namespace SqlSugar
{
return null;
}
var reval = dr.GetInt64(i);
return reval;
var result = dr.GetInt64(i);
return result;
}
public static float? GetConvertFloat(this IDataRecord dr, int i)
@@ -128,8 +128,8 @@ namespace SqlSugar
{
return null;
}
var reval = dr.GetFloat(i);
return reval;
var result = dr.GetFloat(i);
return result;
}
public static DateTime GetdatetimeoffsetDate(this IDataRecord dr, int i)
@@ -139,8 +139,8 @@ namespace SqlSugar
return DateTime.MinValue;
}
var offsetValue = (DateTimeOffset)dr.GetValue(i);
var reval = offsetValue.DateTime;
return reval;
var result = offsetValue.DateTime;
return result;
}
public static DateTime? GetConvertdatetimeoffsetDate(this IDataRecord dr, int i)
@@ -150,8 +150,8 @@ namespace SqlSugar
return DateTime.MinValue;
}
var offsetValue = (DateTimeOffset)dr.GetValue(i);
var reval = offsetValue.DateTime;
return reval;
var result = offsetValue.DateTime;
return result;
}
public static DateTimeOffset Getdatetimeoffset(this IDataRecord dr, int i)
@@ -160,8 +160,8 @@ namespace SqlSugar
{
return default(DateTimeOffset);
}
var reval = (DateTimeOffset)dr.GetValue(i);
return reval;
var result = (DateTimeOffset)dr.GetValue(i);
return result;
}
public static DateTimeOffset? GetConvertdatetimeoffset(this IDataRecord dr, int i)
@@ -170,8 +170,8 @@ namespace SqlSugar
{
return default(DateTimeOffset);
}
var reval = (DateTimeOffset)dr.GetValue(i);
return reval;
var result = (DateTimeOffset)dr.GetValue(i);
return result;
}
@@ -181,8 +181,8 @@ namespace SqlSugar
{
return null;
}
var reval = Convert.ToString(dr.GetValue(i));
return reval;
var result = Convert.ToString(dr.GetValue(i));
return result;
}
public static Nullable<T> GetOtherNull<T>(this IDataReader dr, int i) where T : struct

View File

@@ -8,62 +8,75 @@ namespace SqlSugar
public abstract partial class DbMaintenanceProvider : IDbMaintenance
{
#region DML
public virtual List<DbTableInfo> GetViewInfoList()
public virtual List<DbTableInfo> GetViewInfoList(bool isCache = true)
{
string cacheKey = "DbMaintenanceProvider.GetViewInfoList";
cacheKey = GetCacheKey(cacheKey);
var result = GetListOrCache<DbTableInfo>(cacheKey, this.GetViewInfoListSql);
var result = new List<DbTableInfo>();
if (isCache)
result = GetListOrCache<DbTableInfo>(cacheKey, this.GetViewInfoListSql);
else
result = this.Context.Ado.SqlQuery<DbTableInfo>(this.GetViewInfoListSql);
foreach (var item in result)
{
item.DbObjectType = DbObjectType.View;
}
return result;
}
public virtual List<DbTableInfo> GetTableInfoList()
public virtual List<DbTableInfo> GetTableInfoList(bool isCache = true)
{
string cacheKey = "DbMaintenanceProvider.GetTableInfoList";
cacheKey = GetCacheKey(cacheKey);
var result = GetListOrCache<DbTableInfo>(cacheKey, this.GetTableInfoListSql);
var result = new List<DbTableInfo>();
if (isCache)
result = GetListOrCache<DbTableInfo>(cacheKey, this.GetTableInfoListSql);
else
result = this.Context.Ado.SqlQuery<DbTableInfo>(this.GetTableInfoListSql);
foreach (var item in result)
{
item.DbObjectType = DbObjectType.Table;
}
return result;
}
public virtual List<DbColumnInfo> GetColumnInfosByTableName(string tableName)
public virtual List<DbColumnInfo> GetColumnInfosByTableName(string tableName, bool isCache = true)
{
if (string.IsNullOrEmpty(tableName)) return new List<DbColumnInfo>();
string cacheKey = "DbMaintenanceProvider.GetColumnInfosByTableName." + this.SqlBuilder.GetNoTranslationColumnName(tableName).ToLower();
cacheKey = GetCacheKey(cacheKey);
return GetListOrCache<DbColumnInfo>(cacheKey, string.Format(this.GetColumnInfosByTableNameSql, tableName));
var sql = string.Format(this.GetColumnInfosByTableNameSql, tableName);
if (isCache)
return GetListOrCache<DbColumnInfo>(cacheKey, sql);
else
return this.Context.Ado.SqlQuery<DbColumnInfo>(sql);
}
public virtual List<string> GetIsIdentities(string tableName)
{
string cacheKey = "DbMaintenanceProvider.GetIsIdentities" + this.SqlBuilder.GetNoTranslationColumnName(tableName).ToLower();
cacheKey = GetCacheKey(cacheKey);
return this.Context.Utilities.GetReflectionInoCacheInstance().GetOrCreate(cacheKey,() =>
{
var result = GetColumnInfosByTableName(tableName).Where(it => it.IsIdentity).ToList();
return result.Select(it => it.DbColumnName).ToList();
});
return this.Context.Utilities.GetReflectionInoCacheInstance().GetOrCreate(cacheKey, () =>
{
var result = GetColumnInfosByTableName(tableName).Where(it => it.IsIdentity).ToList();
return result.Select(it => it.DbColumnName).ToList();
});
}
public virtual List<string> GetPrimaries(string tableName)
{
string cacheKey = "DbMaintenanceProvider.GetPrimaries" + this.SqlBuilder.GetNoTranslationColumnName(tableName).ToLower();
cacheKey = GetCacheKey(cacheKey);
return this.Context.Utilities.GetReflectionInoCacheInstance().GetOrCreate(cacheKey,() =>
{
var result = GetColumnInfosByTableName(tableName).Where(it => it.IsPrimarykey).ToList();
return result.Select(it => it.DbColumnName).ToList();
});
return this.Context.Utilities.GetReflectionInoCacheInstance().GetOrCreate(cacheKey, () =>
{
var result = GetColumnInfosByTableName(tableName).Where(it => it.IsPrimarykey).ToList();
return result.Select(it => it.DbColumnName).ToList();
});
}
#endregion
#region Check
public virtual bool IsAnyTable(string tableName)
public virtual bool IsAnyTable(string tableName, bool isCache = true)
{
tableName = this.SqlBuilder.GetNoTranslationColumnName(tableName);
var tables = GetTableInfoList();
var tables = GetTableInfoList(isCache);
if (tables == null) return false;
else return tables.Any(it => it.Name.Equals(tableName, StringComparison.CurrentCultureIgnoreCase));
}
@@ -141,13 +154,7 @@ namespace SqlSugar
this.Context.Ado.ExecuteCommand(sql);
return true;
}
public virtual bool CreateTable(string tableName, List<DbColumnInfo> columns, bool isCreatePrimaryKey = true)
{
tableName = this.SqlBuilder.GetTranslationTableName(tableName);
string sql = GetCreateTableSql(tableName, columns);
this.Context.Ado.ExecuteCommand(sql);
return true;
}
public abstract bool CreateTable(string tableName, List<DbColumnInfo> columns, bool isCreatePrimaryKey = true);
public virtual bool DropTable(string tableName)
{
tableName = this.SqlBuilder.GetTranslationTableName(tableName);
@@ -211,9 +218,9 @@ namespace SqlSugar
{
var isEnableLogEvent = this.Context.Ado.IsEnableLogEvent;
this.Context.Ado.IsEnableLogEvent = false;
var reval = this.Context.Ado.SqlQuery<T>(sql);
var result = this.Context.Ado.SqlQuery<T>(sql);
this.Context.Ado.IsEnableLogEvent = isEnableLogEvent;
return reval;
return result;
});
}
protected virtual string GetCreateTableSql(string tableName, List<DbColumnInfo> columns)

View File

@@ -42,9 +42,10 @@ namespace SqlSugar
IDeleteable<T> asyncDeleteable = CopyDeleteable();
return asyncDeleteable.ExecuteCommand();
});
result.Start();
TaskStart(result);
return result;
}
public Task<bool> ExecuteCommandHasChangeAsync()
{
Task<bool> result = new Task<bool>(() =>
@@ -52,7 +53,7 @@ namespace SqlSugar
IDeleteable<T> asyncDeleteable = CopyDeleteable();
return asyncDeleteable.ExecuteCommand() > 0;
});
result.Start();
TaskStart(result);
return result;
}
public IDeleteable<T> AS(string tableName)
@@ -271,6 +272,14 @@ namespace SqlSugar
}
}
private void TaskStart<Type>(Task<Type> result)
{
if (this.Context.CurrentConnectionConfig.IsShardSameThread) {
Check.Exception(true, "IsShardSameThread=true can't be used async method");
}
result.Start();
}
private void AutoRemoveDataCache()
{
var moreSetts = this.Context.CurrentConnectionConfig.MoreSettings;

View File

@@ -86,13 +86,35 @@ namespace SqlSugar
return mappingInfo == null ? propertyName : mappingInfo.DbColumnName;
}
}
public string GetDbColumnName(string propertyName,Type entityType)
{
var isAny = this.GetEntityInfo(entityType).Columns.Any(it => it.PropertyName.Equals(propertyName, StringComparison.CurrentCultureIgnoreCase));
Check.Exception(!isAny, "Property " + propertyName + " is Invalid");
var typeName = entityType.Name;
if (this.Context.MappingColumns == null || this.Context.MappingColumns.Count == 0) return propertyName;
else
{
var mappingInfo = this.Context.MappingColumns.SingleOrDefault(it => it.EntityName == typeName && it.PropertyName == propertyName);
return mappingInfo == null ? propertyName : mappingInfo.DbColumnName;
}
}
public string GetPropertyName<T>(string dbColumnName)
{
var typeName = typeof(T).Name;
if (this.Context.MappingColumns == null || this.Context.MappingColumns.Count == 0) return dbColumnName;
else
{
var mappingInfo = this.Context.MappingColumns.SingleOrDefault(it => it.EntityName == typeName && it.DbColumnName == dbColumnName);
var mappingInfo = this.Context.MappingColumns.SingleOrDefault(it => it.EntityName == typeName && it.DbColumnName.Equals(dbColumnName,StringComparison.CurrentCultureIgnoreCase));
return mappingInfo == null ? dbColumnName : mappingInfo.PropertyName;
}
}
public string GetPropertyName(string dbColumnName,Type entityType)
{
var typeName = entityType.Name;
if (this.Context.MappingColumns == null || this.Context.MappingColumns.Count == 0) return dbColumnName;
else
{
var mappingInfo = this.Context.MappingColumns.SingleOrDefault(it => it.EntityName == typeName && it.DbColumnName.Equals(dbColumnName,StringComparison.CurrentCultureIgnoreCase));
return mappingInfo == null ? dbColumnName : mappingInfo.PropertyName;
}
}

View File

@@ -93,7 +93,7 @@ namespace SqlSugar
IInsertable<T> asyncInsertable = CopyInsertable();
return asyncInsertable.ExecuteCommand();
});
result.Start();
TaskStart(result);
return result;
}
public Task<int> ExecuteReturnIdentityAsync()
@@ -103,7 +103,7 @@ namespace SqlSugar
IInsertable<T> asyncInsertable = CopyInsertable();
return asyncInsertable.ExecuteReturnIdentity();
});
result.Start();
TaskStart(result);
return result;
}
public Task<T> ExecuteReturnEntityAsync()
@@ -113,7 +113,7 @@ namespace SqlSugar
IInsertable<T> asyncInsertable = CopyInsertable();
return asyncInsertable.ExecuteReturnEntity();
});
result.Start();
TaskStart(result);
return result;
}
public Task<bool> ExecuteCommandIdentityIntoEntityAsync()
@@ -123,7 +123,7 @@ namespace SqlSugar
IInsertable<T> asyncInsertable = CopyInsertable();
return asyncInsertable.ExecuteCommandIdentityIntoEntity();
});
result.Start();
TaskStart(result);
return result;
}
public Task<long> ExecuteReturnBigIdentityAsync()
@@ -133,7 +133,7 @@ namespace SqlSugar
IInsertable<T> asyncInsertable = CopyInsertable();
return asyncInsertable.ExecuteReturnBigIdentity();
});
result.Start();
TaskStart(result);
return result;
}
#endregion
@@ -327,6 +327,14 @@ namespace SqlSugar
return this.EntityInfo.Columns.Where(it => it.IsIdentity).Select(it => it.DbColumnName).ToList();
}
}
private void TaskStart<Type>(Task<Type> result)
{
if (this.Context.CurrentConnectionConfig.IsShardSameThread)
{
Check.Exception(true, "IsShardSameThread=true can't be used async method");
}
result.Start();
}
protected void RestoreMapping()
{
if (IsAs)

View File

@@ -122,7 +122,7 @@ namespace SqlSugar
return this;
}
public virtual ISugarQueryable<T> Where(List<ConditionalModel> conditionalModels)
public virtual ISugarQueryable<T> Where(List<IConditionalModel> conditionalModels)
{
if (conditionalModels.IsNullOrEmpty()) return this;
var sqlObj = this.Context.Utilities.ConditionalModelToSql(conditionalModels);
@@ -354,22 +354,22 @@ namespace SqlSugar
QueryBuilder.Skip = null;
QueryBuilder.Take = null;
QueryBuilder.OrderByValue = null;
var reval = this.ToList();
var result = this.ToList();
QueryBuilder.Skip = oldSkip;
QueryBuilder.Take = oldTake;
QueryBuilder.OrderByValue = oldOrderBy;
if (reval == null || reval.Count == 0)
if (result == null || result.Count == 0)
{
return default(T);
}
else if (reval.Count == 2)
else if (result.Count == 2)
{
Check.Exception(true, ".Single() result must not exceed one . You can use.First()");
return default(T);
}
else
{
return reval.SingleOrDefault();
return result.SingleOrDefault();
}
}
public virtual T Single(Expression<Func<T, bool>> expression)
@@ -395,9 +395,9 @@ namespace SqlSugar
{
QueryBuilder.Skip = 0;
QueryBuilder.Take = 1;
var reval = this.ToList();
if (reval.HasValue())
return reval.FirstOrDefault();
var result = this.ToList();
if (result.HasValue())
return result.FirstOrDefault();
else
return default(T);
}
@@ -428,11 +428,11 @@ namespace SqlSugar
}
public virtual ISugarQueryable<TResult> Select<TResult>(string selectValue)
{
var reval = InstanceFactory.GetQueryable<TResult>(this.Context.CurrentConnectionConfig);
reval.Context = this.Context;
reval.SqlBuilder = this.SqlBuilder;
var result = InstanceFactory.GetQueryable<TResult>(this.Context.CurrentConnectionConfig);
result.Context = this.Context;
result.SqlBuilder = this.SqlBuilder;
QueryBuilder.SelectValue = selectValue;
return reval;
return result;
}
public virtual ISugarQueryable<T> Select(string selectValue)
{
@@ -484,8 +484,8 @@ namespace SqlSugar
public virtual TResult Max<TResult>(string maxField)
{
this.Select(string.Format(QueryBuilder.MaxTemplate, maxField));
var reval = this._ToList<TResult>().SingleOrDefault();
return reval;
var result = this._ToList<TResult>().SingleOrDefault();
return result;
}
public virtual TResult Max<TResult>(Expression<Func<T, TResult>> expression)
{
@@ -495,8 +495,8 @@ namespace SqlSugar
public virtual TResult Min<TResult>(string minField)
{
this.Select(string.Format(QueryBuilder.MinTemplate, minField));
var reval = this._ToList<TResult>().SingleOrDefault();
return reval;
var result = this._ToList<TResult>().SingleOrDefault();
return result;
}
public virtual TResult Min<TResult>(Expression<Func<T, TResult>> expression)
{
@@ -506,8 +506,8 @@ namespace SqlSugar
public virtual TResult Sum<TResult>(string sumField)
{
this.Select(string.Format(QueryBuilder.SumTemplate, sumField));
var reval = this._ToList<TResult>().SingleOrDefault();
return reval;
var result = this._ToList<TResult>().SingleOrDefault();
return result;
}
public virtual TResult Sum<TResult>(Expression<Func<T, TResult>> expression)
{
@@ -517,8 +517,8 @@ namespace SqlSugar
public virtual TResult Avg<TResult>(string avgField)
{
this.Select(string.Format(QueryBuilder.AvgTemplate, avgField));
var reval = this._ToList<TResult>().SingleOrDefault();
return reval;
var result = this._ToList<TResult>().SingleOrDefault();
return result;
}
public virtual TResult Avg<TResult>(Expression<Func<T, TResult>> expression)
{
@@ -658,7 +658,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.Single();
});
result.Start();
TaskStart(result);
return result;
}
@@ -669,7 +669,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.Single(expression);
});
result.Start();
TaskStart(result);
return result;
}
@@ -680,7 +680,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.First();
});
result.Start();
TaskStart(result);
return result;
}
@@ -691,7 +691,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.First(expression);
});
result.Start();
TaskStart(result);
return result;
}
@@ -702,7 +702,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.Any(expression);
});
result.Start();
TaskStart(result);
return result;
}
@@ -713,7 +713,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.Any();
});
result.Start();
TaskStart(result);
return result;
}
@@ -724,7 +724,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.Count();
});
result.Start();
TaskStart(result);
return result;
}
public Task<int> CountAsync(Expression<Func<T, bool>> expression)
@@ -734,7 +734,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.Count(expression);
});
result.Start();
TaskStart(result); ;
return result;
}
public Task<TResult> MaxAsync<TResult>(string maxField)
@@ -744,7 +744,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.Max<TResult>(maxField);
});
result.Start();
TaskStart(result);
return result;
}
@@ -755,7 +755,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.Max<TResult>(expression);
});
result.Start();
TaskStart(result);
return result;
}
@@ -766,7 +766,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.Min<TResult>(minField);
});
result.Start();
TaskStart(result);
return result;
}
@@ -777,7 +777,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.Min<TResult>(expression);
});
result.Start();
TaskStart(result);
return result;
}
@@ -788,7 +788,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.Sum<TResult>(sumField);
});
result.Start();
TaskStart(result);
return result;
}
@@ -799,7 +799,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.Sum<TResult>(expression);
});
result.Start();
TaskStart(result);
return result;
}
@@ -810,7 +810,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.Avg<TResult>(avgField);
});
result.Start();
TaskStart(result);
return result;
}
@@ -821,7 +821,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.Avg<TResult>(expression);
});
result.Start();
TaskStart(result);
return result;
}
@@ -832,7 +832,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.ToList();
});
result.Start();
TaskStart(result);
return result;
}
@@ -843,7 +843,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.ToJson();
});
result.Start();
TaskStart(result);
return result;
}
@@ -854,7 +854,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.ToJsonPage(pageIndex, pageSize);
});
result.Start();
TaskStart(result);
return result;
}
@@ -867,7 +867,7 @@ namespace SqlSugar
var list = asyncQueryable.ToJsonPage(pageIndex, pageSize, ref totalNumberAsync);
return new KeyValuePair<string, int>(list, totalNumberAsync);
});
result.Start();
TaskStart(result);
return result;
}
@@ -878,7 +878,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.ToDataTable();
});
result.Start();
TaskStart(result);
return result;
}
@@ -889,7 +889,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.ToDataTablePage(pageIndex, pageSize);
});
result.Start();
TaskStart(result);
return result;
}
@@ -902,7 +902,7 @@ namespace SqlSugar
var list = asyncQueryable.ToDataTablePage(pageIndex, pageSize, ref totalNumberAsync);
return new KeyValuePair<DataTable, int>(list, totalNumberAsync);
});
result.Start();
TaskStart(result);
return result;
}
@@ -913,7 +913,7 @@ namespace SqlSugar
ISugarQueryable<T> asyncQueryable = CopyQueryable();
return asyncQueryable.ToPageList(pageIndex, pageSize);
});
result.Start();
TaskStart(result);
return result;
}
@@ -926,20 +926,29 @@ namespace SqlSugar
var list = asyncQueryable.ToPageList(pageIndex, pageSize, ref totalNumberAsync);
return new KeyValuePair<List<T>, int>(list, totalNumberAsync);
});
result.Start();
TaskStart(result);
return result;
}
#endregion
#region Private Methods
private void TaskStart<Type>(Task<Type> result)
{
if (this.Context.CurrentConnectionConfig.IsShardSameThread)
{
Check.Exception(true, "IsShardSameThread=true can't be used async method");
}
result.Start();
}
protected ISugarQueryable<TResult> _Select<TResult>(Expression expression)
{
var reval = InstanceFactory.GetQueryable<TResult>(this.Context.CurrentConnectionConfig);
reval.Context = this.Context;
reval.SqlBuilder = this.SqlBuilder;
reval.SqlBuilder.QueryBuilder.Parameters = QueryBuilder.Parameters;
reval.SqlBuilder.QueryBuilder.SelectValue = expression;
return reval;
this.Context.InitMppingInfo<TResult>();
var result = InstanceFactory.GetQueryable<TResult>(this.Context.CurrentConnectionConfig);
result.Context = this.Context;
result.SqlBuilder = this.SqlBuilder;
result.SqlBuilder.QueryBuilder.Parameters = QueryBuilder.Parameters;
result.SqlBuilder.QueryBuilder.SelectValue = expression;
return result;
}
protected void _Where(Expression expression)
{
@@ -1069,8 +1078,8 @@ namespace SqlSugar
ToSqlBefore();
sql = QueryBuilder.ToSqlString();
sql = QueryBuilder.ToCountSql(sql);
var reval = Context.Ado.GetInt(sql, QueryBuilder.Parameters.ToArray());
return reval;
var result = Context.Ado.GetInt(sql, QueryBuilder.Parameters.ToArray());
return result;
}
private void ToSqlBefore()
@@ -1232,7 +1241,7 @@ namespace SqlSugar
Where<T>(whereString, whereObj);
return this;
}
public new ISugarQueryable<T, T2> Where(List<ConditionalModel> conditionalModels)
public new ISugarQueryable<T, T2> Where(List<IConditionalModel> conditionalModels)
{
base.Where(conditionalModels);
return this;
@@ -1559,7 +1568,7 @@ namespace SqlSugar
_Where(expression);
return this;
}
public new ISugarQueryable<T, T2, T3> Where(List<ConditionalModel> conditionalModels)
public new ISugarQueryable<T, T2, T3> Where(List<IConditionalModel> conditionalModels)
{
base.Where(conditionalModels);
return this;
@@ -1741,7 +1750,7 @@ namespace SqlSugar
_Where(expression);
return this;
}
public new ISugarQueryable<T, T2, T3, T4> Where(List<ConditionalModel> conditionalModels)
public new ISugarQueryable<T, T2, T3, T4> Where(List<IConditionalModel> conditionalModels)
{
base.Where(conditionalModels);
return this;
@@ -2055,7 +2064,7 @@ namespace SqlSugar
_Where(expression);
return this;
}
public new ISugarQueryable<T, T2, T3, T4, T5> Where(List<ConditionalModel> conditionalModels)
public new ISugarQueryable<T, T2, T3, T4, T5> Where(List<IConditionalModel> conditionalModels)
{
base.Where(conditionalModels);
return this;
@@ -2372,7 +2381,7 @@ namespace SqlSugar
_Where(expression);
return this;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6> Where(List<ConditionalModel> conditionalModels)
public new ISugarQueryable<T, T2, T3, T4, T5, T6> Where(List<IConditionalModel> conditionalModels)
{
base.Where(conditionalModels);
return this;
@@ -2679,7 +2688,7 @@ namespace SqlSugar
_Where(expression);
return this;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Where(List<ConditionalModel> conditionalModels)
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Where(List<IConditionalModel> conditionalModels)
{
base.Where(conditionalModels);
return this;
@@ -3013,7 +3022,7 @@ namespace SqlSugar
_Where(expression);
return this;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Where(List<ConditionalModel> conditionalModels)
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Where(List<IConditionalModel> conditionalModels)
{
base.Where(conditionalModels);
return this;
@@ -3379,7 +3388,7 @@ namespace SqlSugar
_Where(expression);
return this;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Where(List<ConditionalModel> conditionalModels)
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Where(List<IConditionalModel> conditionalModels)
{
base.Where(conditionalModels);
return this;
@@ -3757,7 +3766,7 @@ namespace SqlSugar
_Where(expression);
return this;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Where(List<ConditionalModel> conditionalModels)
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Where(List<IConditionalModel> conditionalModels)
{
base.Where(conditionalModels);
return this;
@@ -4171,7 +4180,7 @@ namespace SqlSugar
_Where(expression);
return this;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Where(List<ConditionalModel> conditionalModels)
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Where(List<IConditionalModel> conditionalModels)
{
base.Where(conditionalModels);
return this;
@@ -4597,7 +4606,7 @@ namespace SqlSugar
_Where(expression);
return this;
}
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Where(List<ConditionalModel> conditionalModels)
public new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Where(List<IConditionalModel> conditionalModels)
{
base.Where(conditionalModels);
return this;

View File

@@ -161,8 +161,8 @@ namespace SqlSugar
if (this.Parameters == null)
this.Parameters = new List<SugarParameter>();
this.Parameters.AddRange(resolveExpress.Parameters);
var reval = resolveExpress.Result;
return reval;
var result = resolveExpress.Result;
return result;
}
#endregion
}

View File

@@ -105,8 +105,8 @@ namespace SqlSugar
resolveExpress.SqlFuncServices = Context.CurrentConnectionConfig.ConfigureExternalServices == null ? null : Context.CurrentConnectionConfig.ConfigureExternalServices.SqlFuncServices;
resolveExpress.Resolve(expression, resolveType);
this.Parameters.AddRange(resolveExpress.Parameters);
var reval = resolveExpress.Result;
return reval;
var result = resolveExpress.Result;
return result;
}
public virtual string ToSqlString()
{

View File

@@ -230,13 +230,13 @@ namespace SqlSugar
};
resolveExpress.Resolve(expression, resolveType);
this.Parameters.AddRange(resolveExpress.Parameters);
var reval = resolveExpress.Result;
var result = resolveExpress.Result;
var isSingleTableHasSubquery = IsSingle() && resolveExpress.SingleTableNameSubqueryShortName.HasValue();
if (isSingleTableHasSubquery) {
Check.Exception(!string.IsNullOrEmpty(this.TableShortName) && resolveExpress.SingleTableNameSubqueryShortName != this.TableShortName, "{0} and {1} need same name");
this.TableShortName = resolveExpress.SingleTableNameSubqueryShortName;
}
return reval;
return result;
}
public virtual string ToSqlString()
{
@@ -360,32 +360,32 @@ namespace SqlSugar
{
get
{
string reval = string.Empty;
string result = string.Empty;
if (this.SelectValue == null || this.SelectValue is string)
{
reval = GetSelectValueByString();
result = GetSelectValueByString();
}
else
{
reval = GetSelectValueByExpression();
result = GetSelectValueByExpression();
}
if (this.SelectType == ResolveExpressType.SelectMultiple)
{
this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this._JoinQueryInfos.Select(it => it.TableName));
}
return reval;
return result;
}
}
public virtual string GetSelectValueByExpression()
{
var expression = this.SelectValue as Expression;
var reval = GetExpressionValue(expression, this.SelectType).GetResultString();
this.SelectCacheKey = reval;
return reval;
var result = GetExpressionValue(expression, this.SelectType).GetResultString();
this.SelectCacheKey = result;
return result;
}
public virtual string GetSelectValueByString()
{
string reval;
string result;
if (this.SelectValue.IsNullOrEmpty())
{
string pre = null;
@@ -393,15 +393,18 @@ namespace SqlSugar
{
pre = Builder.GetTranslationColumnName(TableShortName) + ".";
}
reval = string.Join(",", this.Context.EntityMaintenance.GetEntityInfo(this.EntityType).Columns.Where(it => !it.IsIgnore).Select(it => pre + Builder.GetTranslationColumnName(it.EntityName, it.PropertyName)));
result = string.Join(",", this.Context.EntityMaintenance.GetEntityInfo(this.EntityType).Columns.Where(it => !it.IsIgnore).Select(it => pre + Builder.GetTranslationColumnName(it.EntityName, it.PropertyName)));
}
else
{
reval = this.SelectValue.ObjToString();
this.SelectCacheKey = reval;
result = this.SelectValue.ObjToString();
this.SelectCacheKey = result;
}
return reval;
if (result.IsNullOrEmpty())
{
result = "*";
}
return result;
}
public virtual string GetWhereValueString
{

View File

@@ -110,6 +110,7 @@ namespace SqlSugar
public abstract string SqlTranslationRight { get; }
public virtual string SqlFalse { get { return "1=2 "; } }
public virtual string SqlDateNow { get { return "GETDATE()"; } }
public virtual string FullSqlDateNow { get { return "SELECT GETDATE()"; } }
public virtual string SqlSelectAll { get { return "*"; } }
#endregion
}

View File

@@ -122,8 +122,8 @@ namespace SqlSugar
}
resolveExpress.Resolve(expression, resolveType);
this.Parameters.AddRange(resolveExpress.Parameters);
var reval = resolveExpress.Result;
return reval;
var result = resolveExpress.Result;
return result;
}
public virtual string ToSqlString()
{

View File

@@ -45,7 +45,7 @@ namespace SqlSugar
IUpdateable<T> asyncUpdateable = CopyUpdateable();
return asyncUpdateable.ExecuteCommand();
});
result.Start();
TaskStart(result);
return result;
}
public Task<bool> ExecuteCommandHasChangeAsync()
@@ -55,7 +55,7 @@ namespace SqlSugar
IUpdateable<T> asyncUpdateable = CopyUpdateable();
return asyncUpdateable.ExecuteCommand() > 0;
});
result.Start();
TaskStart(result);
return result;
}
public IUpdateable<T> AS(string tableName)
@@ -117,7 +117,7 @@ namespace SqlSugar
if (this.WhereColumnList == null) this.WhereColumnList = new List<string>();
foreach (var item in whereColumns)
{
this.WhereColumnList.Add(this.Context.EntityMaintenance.GetDbColumnName<T>(item));
this.WhereColumnList.Add(item);
}
return this;
}
@@ -355,6 +355,14 @@ namespace SqlSugar
this.Context.MappingTables = OldMappingTableList;
}
}
private void TaskStart<Type>(Task<Type> result)
{
if (this.Context.CurrentConnectionConfig.IsShardSameThread)
{
Check.Exception(true, "IsShardSameThread=true can't be used async method");
}
result.Start();
}
private IUpdateable<T> CopyUpdateable()
{
var asyncContext = this.Context.Utilities.CopyContext(true);

View File

@@ -5,7 +5,15 @@ using System.Text;
namespace SqlSugar
{
public class ConditionalModel
public interface IConditionalModel {
}
public class ConditionalCollections : IConditionalModel
{
public List<KeyValuePair<WhereType, ConditionalModel>> ConditionalList { get; set; }
}
public class ConditionalModel: IConditionalModel
{
public ConditionalModel()
{

View File

@@ -18,6 +18,7 @@ namespace SqlSugar
LikeLeft=8,
LikeRight=9,
NoEqual=10,
IsNullOrEmpty=11
IsNullOrEmpty=11,
IsNot=12
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SqlSugar
{
public enum WhereType
{
And=0,
Or=1
}
}

View File

@@ -109,6 +109,9 @@ namespace SqlSugar
}
// fetch the root object reference:
var constExpr = expression as ConstantExpression;
if (constExpr == null) {
return DynamicInvoke(rootExpression);
}
object objReference = constExpr.Value;
// "ascend" back whence we came from and resolve object references along the way:
while (memberInfos.Count > 0) // or some other break condition
@@ -145,6 +148,10 @@ namespace SqlSugar
public static object GetFiledValue(MemberExpression memberExpr)
{
if (!(memberExpr.Member is FieldInfo))
{
return DynamicInvoke(memberExpr);
}
object reval = null;
FieldInfo field = (FieldInfo)memberExpr.Member;
Check.Exception(field.IsPrivate, string.Format(" Field \"{0}\" can't be private ", field.Name));
@@ -189,6 +196,10 @@ namespace SqlSugar
public static object GetPropertyValue(MemberExpression memberExpr)
{
if (!(memberExpr.Member is PropertyInfo))
{
return DynamicInvoke(memberExpr);
}
object reval = null;
PropertyInfo pro = (PropertyInfo)memberExpr.Member;
reval = pro.GetValue(memberExpr.Member, null);

View File

@@ -25,6 +25,21 @@ namespace SqlSugar
this.ParameterName = name;
SettingDataType(type);
}
public SugarParameter(string name, object value, Type type,ParameterDirection direction)
{
this.Value = value;
this.ParameterName = name;
this.Direction = direction;
SettingDataType(type);
}
public SugarParameter(string name, object value, Type type, ParameterDirection direction,int size)
{
this.Value = value;
this.ParameterName = name;
this.Direction = direction;
this.Size = size;
SettingDataType(type);
}
private void SettingDataType(Type type)
{

View File

@@ -415,20 +415,20 @@ namespace SqlSugar
}
else
{
var fieldName = property.Name;
var mappingInfo = this.Context.MappingColumns.FirstOrDefault(it => it.EntityName == item.Type.Name && it.PropertyName.Equals(fieldName, StringComparison.CurrentCultureIgnoreCase));
var propertyName = property.Name;
var dbColumnName = propertyName;
var mappingInfo = this.Context.MappingColumns.FirstOrDefault(it => it.EntityName == item.Type.Name && it.PropertyName.Equals(propertyName, StringComparison.CurrentCultureIgnoreCase));
if (mappingInfo.HasValue()) {
fieldName = mappingInfo.DbColumnName;
dbColumnName = mappingInfo.DbColumnName;
}
asName = this.Context.GetTranslationText(item.Type.Name + "." + fieldName);
var columnName = property.Name;
asName = this.Context.GetTranslationText(item.Type.Name + "." + propertyName);
if (Context.IsJoin)
{
this.Context.Result.Append(Context.GetAsString(asName, columnName, shortName.ObjToString()));
this.Context.Result.Append(Context.GetAsString(asName, dbColumnName, shortName.ObjToString()));
}
else
{
this.Context.Result.Append(Context.GetAsString(asName, columnName));
this.Context.Result.Append(Context.GetAsString(asName, dbColumnName));
}
}
}

View File

@@ -19,6 +19,8 @@ namespace SqlSugar
case ResolveExpressType.FieldMultiple:
case ResolveExpressType.SelectSingle:
case ResolveExpressType.SelectMultiple:
case ResolveExpressType.ArraySingle:
case ResolveExpressType.ArrayMultiple:
case ResolveExpressType.Update:
var nodeType = expression.NodeType;
base.Expression = expression.Operand;

View File

@@ -13,5 +13,6 @@ namespace SqlSugar
string GetValue(Expression expression);
int Sort { get; }
Expression Expression { get; set; }
bool HasWhere { get; set; }
}
}

View File

@@ -31,6 +31,11 @@ namespace SqlSugar
get;set;
}
public bool HasWhere
{
get; set;
}
public string GetValue(Expression expression)
{
var exp = expression as MethodCallExpression;

View File

@@ -18,6 +18,11 @@ namespace SqlSugar
get;set;
}
public bool HasWhere
{
get;set;
}
public string Name
{
get

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubAvg: ISubOperation
{
public bool HasWhere
{
get; set;
}
public string Name
{
get

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubBegin : ISubOperation
{
public bool HasWhere
{
get; set;
}
public string Name
{
get

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubCount: ISubOperation
{
public bool HasWhere
{
get; set;
}
public string Name
{
get

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubFromTable : ISubOperation
{
public bool HasWhere
{
get; set;
}
public string Name
{
get

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubGroupBy : ISubOperation
{
public bool HasWhere
{
get; set;
}
public string Name
{
get { return "GroupBy"; }

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubLeftBracket : ISubOperation
{
public bool HasWhere
{
get; set;
}
public ExpressionContext Context
{
get;set;

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubMax:ISubOperation
{
public bool HasWhere
{
get; set;
}
public string Name
{
get

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubMin: ISubOperation
{
public bool HasWhere
{
get; set;
}
public string Name
{
get

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubNotAny : ISubOperation
{
public bool HasWhere
{
get; set;
}
public ExpressionContext Context
{
get;set;

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubOrderBy : ISubOperation
{
public bool HasWhere
{
get; set;
}
public string Name
{
get { return "OrderBy"; }
@@ -33,6 +38,10 @@ namespace SqlSugar
public string GetValue(Expression expression)
{
if (this.Context is OracleExpressionContext)
{
throw new Exception("Oracle Subquery can't OrderBy");
}
var exp = expression as MethodCallExpression;
var argExp = exp.Arguments[0];
var result = "ORDER BY " + SubTools.GetMethodValue(this.Context, argExp, ResolveExpressType.FieldSingle);
@@ -43,6 +52,11 @@ namespace SqlSugar
}
public class SubOrderByDesc : ISubOperation
{
public bool HasWhere
{
get; set;
}
public string Name
{
get { return "OrderByDesc"; }

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubRightBracket : ISubOperation
{
public bool HasWhere
{
get; set;
}
public ExpressionContext Context
{
get;set;

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubSelect : ISubOperation
{
public bool HasWhere
{
get; set;
}
public string Name
{
get

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubSelectDefault : ISubOperation
{
public bool HasWhere
{
get; set;
}
public ExpressionContext Context
{
get;set;

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubSum:ISubOperation
{
public bool HasWhere
{
get; set;
}
public string Name
{
get

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubTop : ISubOperation
{
public bool HasWhere
{
get; set;
}
public ExpressionContext Context
{
get; set;
@@ -34,6 +39,10 @@ namespace SqlSugar
{
return 150;
}
else if (this.Context is OracleExpressionContext) {
return 401;
}
else
{
return 490;
@@ -50,7 +59,7 @@ namespace SqlSugar
}
else if (this.Context is OracleExpressionContext)
{
return "ROWNUM=1";
return (HasWhere?"AND":"WHERE")+ " ROWNUM=1";
}
else
{

View File

@@ -8,6 +8,11 @@ namespace SqlSugar
{
public class SubWhere: ISubOperation
{
public bool HasWhere
{
get; set;
}
public string Name
{
get { return "Where"; }

View File

@@ -99,8 +99,10 @@ namespace SqlSugar
isubList.Add(new SubSelectDefault());
}
isubList = isubList.OrderBy(it => it.Sort).ToList();
var isHasWhere = isubList.Where(it => it is SubWhere).Any();
List<string> result = isubList.Select(it =>
{
it.HasWhere = isHasWhere;
return it.GetValue(it.Expression);
}).ToList();
return result;

View File

@@ -85,6 +85,33 @@ namespace SqlSugar
return result;
}
/// <summary>
///DataReader to DataReaderToDictionary
/// </summary>
/// <param name="reader"></param>
/// <returns></returns>
public Dictionary<string, object> DataReaderToDictionary(IDataReader reader,Type type)
{
Dictionary<string, object> result = new Dictionary<string, object>();
for (int i = 0; i < reader.FieldCount; i++)
{
string name = reader.GetName(i);
try
{
name = this.Context.EntityMaintenance.GetPropertyName(name,type);
var addItem = reader.GetValue(i);
if (addItem == DBNull.Value)
addItem = null;
result.Add(name, addItem);
}
catch
{
result.Add(name, null);
}
}
return result;
}
/// <summary>
/// DataReaderToDynamicList
/// </summary>
@@ -102,7 +129,7 @@ namespace SqlSugar
{
while (reader.Read())
{
var readerValues = DataReaderToDictionary(reader);
var readerValues = DataReaderToDictionary(reader,tType);
var result = new Dictionary<string, object>();
foreach (var item in classProperties)
{
@@ -160,10 +187,12 @@ namespace SqlSugar
{
Dictionary<string, object> result = new Dictionary<string, object>();
var type = item.PropertyType;
if (UtilConstants.SugarType == type) {
if (UtilConstants.SugarType == type)
{
return result;
}
if (type.FullName.IsCollectionsList()) {
if (type.FullName.IsCollectionsList())
{
return null;
}
var classProperties = type.GetProperties().ToList();
@@ -178,9 +207,10 @@ namespace SqlSugar
else
{
var key = typeName + "." + name;
if (readerValues.ContainsKey(key))
var info = readerValues.Select(it=>it.Key).FirstOrDefault(it=>it.ToLower() == key.ToLower());
if (info!=null)
{
var addItem = readerValues[key];
var addItem = readerValues[info];
if (addItem == DBNull.Value)
addItem = null;
result.Add(name, addItem);
@@ -295,74 +325,125 @@ namespace SqlSugar
#endregion
#region Query
public KeyValuePair<string, SugarParameter[]> ConditionalModelToSql(List<ConditionalModel> models)
public KeyValuePair<string, SugarParameter[]> ConditionalModelToSql(List<IConditionalModel> models,int beginIndex=0)
{
if (models.IsNullOrEmpty()) return new KeyValuePair<string, SugarParameter[]>();
StringBuilder builder = new StringBuilder();
List<SugarParameter> parameters = new List<SugarParameter>();
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig);
foreach (var item in models)
foreach (var model in models)
{
var index = models.IndexOf(item);
var type = index == 0 ? "" : "AND";
string temp = " {0} {1} {2} {3} ";
string parameterName = string.Format("{0}Conditional{1}{2}", sqlBuilder.SqlParameterKeyWord, item.FieldName, index);
switch (item.ConditionalType)
if (model is ConditionalModel)
{
case ConditionalType.Equal:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "=", parameterName);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.Like:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "LIKE", parameterName);
parameters.Add(new SugarParameter(parameterName, "%" + item.FieldValue + "%"));
break;
case ConditionalType.GreaterThan:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), ">", parameterName);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.GreaterThanOrEqual:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), ">=", parameterName);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.LessThan:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "<", parameterName);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.LessThanOrEqual:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "<=", parameterName);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.In:
if (item.FieldValue == null) item.FieldValue = string.Empty;
var inValue1 = ("(" + item.FieldValue.Split(',').ToJoinSqlInVals() + ")");
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "IN", inValue1);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.NotIn:
if (item.FieldValue == null) item.FieldValue = string.Empty;
var inValue2 = ("(" + item.FieldValue.Split(',').ToJoinSqlInVals() + ")");
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "NOT IN", inValue2);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.LikeLeft:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "LIKE", parameterName);
parameters.Add(new SugarParameter(parameterName, item.FieldValue + "%"));
break;
case ConditionalType.LikeRight:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "LIKE", parameterName);
parameters.Add(new SugarParameter(parameterName, "%" + item.FieldValue));
break;
case ConditionalType.NoEqual:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "<>", parameterName);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.IsNullOrEmpty:
builder.AppendFormat("{0} ({1}) OR ({2}) ", type, item.FieldName.ToSqlFilter() + " IS NULL ", item.FieldName.ToSqlFilter() + " = '' ");
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
default:
break;
var item = model as ConditionalModel;
var index = models.IndexOf(item)+ beginIndex;
var type = index == 0 ? "" : "AND";
if (beginIndex > 0) {
type = null;
}
string temp = " {0} {1} {2} {3} ";
string parameterName = string.Format("{0}Conditional{1}{2}", sqlBuilder.SqlParameterKeyWord, item.FieldName, index);
switch (item.ConditionalType)
{
case ConditionalType.Equal:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "=", parameterName);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.Like:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "LIKE", parameterName);
parameters.Add(new SugarParameter(parameterName, "%" + item.FieldValue + "%"));
break;
case ConditionalType.GreaterThan:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), ">", parameterName);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.GreaterThanOrEqual:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), ">=", parameterName);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.LessThan:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "<", parameterName);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.LessThanOrEqual:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "<=", parameterName);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.In:
if (item.FieldValue == null) item.FieldValue = string.Empty;
var inValue1 = ("(" + item.FieldValue.Split(',').ToJoinSqlInVals() + ")");
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "IN", inValue1);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.NotIn:
if (item.FieldValue == null) item.FieldValue = string.Empty;
var inValue2 = ("(" + item.FieldValue.Split(',').ToJoinSqlInVals() + ")");
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "NOT IN", inValue2);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.LikeLeft:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "LIKE", parameterName);
parameters.Add(new SugarParameter(parameterName, item.FieldValue + "%"));
break;
case ConditionalType.LikeRight:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "LIKE", parameterName);
parameters.Add(new SugarParameter(parameterName, "%" + item.FieldValue));
break;
case ConditionalType.NoEqual:
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "<>", parameterName);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.IsNullOrEmpty:
builder.AppendFormat("{0} ({1}) OR ({2}) ", type, item.FieldName.ToSqlFilter() + " IS NULL ", item.FieldName.ToSqlFilter() + " = '' ");
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
break;
case ConditionalType.IsNot:
if (item.FieldValue == null)
{
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), " IS NOT ", "NULL");
}
else
{
builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "<>", parameterName);
parameters.Add(new SugarParameter(parameterName, item.FieldValue));
}
break;
default:
break;
}
}
else
{
var item = model as ConditionalCollections;
if (item != null)
{
foreach (var con in item.ConditionalList)
{
var index = item.ConditionalList.IndexOf(con);
var isFirst = index == 0;
var isLast = index == (item.ConditionalList.Count - 1);
if (isFirst)
{
builder.AppendFormat(" {0} ( ", con.Key.ToString().ToUpper());
}
List<IConditionalModel> conModels = new List<IConditionalModel>();
conModels.Add(con.Value);
var childSqlInfo = ConditionalModelToSql(conModels,1000*(1+index));
if (!isFirst) {
builder.AppendFormat(" {0} ", con.Key.ToString().ToUpper());
}
builder.Append(childSqlInfo.Key);
parameters.AddRange(childSqlInfo.Value);
if (isLast)
{
builder.Append(" ) ");
}
else {
}
}
}
}
}
return new KeyValuePair<string, SugarParameter[]>(builder.ToString(), parameters.ToArray());

View File

@@ -156,8 +156,8 @@ namespace SqlSugar
var entityInfo = this.Context.Utilities.GetReflectionInoCacheInstance().GetOrCreate<EntityInfo>(cacheKey,
() =>
{
var reval = this.Context.EntityMaintenance.GetEntityInfo(type);
return reval;
var result = this.Context.EntityMaintenance.GetEntityInfo(type);
return result;
});
var copyObj = CopyEntityInfo(entityInfo);
InitMppingInfo(copyObj);
@@ -267,45 +267,45 @@ namespace SqlSugar
}
protected InsertableProvider<T> CreateInsertable<T>(T[] insertObjs) where T : class, new()
{
var reval = InstanceFactory.GetInsertableProvider<T>(this.CurrentConnectionConfig);
var result = InstanceFactory.GetInsertableProvider<T>(this.CurrentConnectionConfig);
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); ;
reval.Context = this.Context;
reval.EntityInfo = this.Context.EntityMaintenance.GetEntityInfo<T>();
reval.SqlBuilder = sqlBuilder;
reval.InsertObjs = insertObjs;
sqlBuilder.InsertBuilder = reval.InsertBuilder = InstanceFactory.GetInsertBuilder(this.CurrentConnectionConfig);
result.Context = this.Context;
result.EntityInfo = this.Context.EntityMaintenance.GetEntityInfo<T>();
result.SqlBuilder = sqlBuilder;
result.InsertObjs = insertObjs;
sqlBuilder.InsertBuilder = result.InsertBuilder = InstanceFactory.GetInsertBuilder(this.CurrentConnectionConfig);
sqlBuilder.InsertBuilder.Builder = sqlBuilder;
sqlBuilder.InsertBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(this.CurrentConnectionConfig);
sqlBuilder.Context = reval.SqlBuilder.InsertBuilder.Context = this.Context;
reval.Init();
return reval;
sqlBuilder.Context = result.SqlBuilder.InsertBuilder.Context = this.Context;
result.Init();
return result;
}
protected DeleteableProvider<T> CreateDeleteable<T>() where T : class, new()
{
var reval = InstanceFactory.GetDeleteableProvider<T>(this.CurrentConnectionConfig);
var result = InstanceFactory.GetDeleteableProvider<T>(this.CurrentConnectionConfig);
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); ;
reval.Context = this.Context;
reval.SqlBuilder = sqlBuilder;
sqlBuilder.DeleteBuilder = reval.DeleteBuilder = InstanceFactory.GetDeleteBuilder(this.CurrentConnectionConfig);
result.Context = this.Context;
result.SqlBuilder = sqlBuilder;
sqlBuilder.DeleteBuilder = result.DeleteBuilder = InstanceFactory.GetDeleteBuilder(this.CurrentConnectionConfig);
sqlBuilder.DeleteBuilder.Builder = sqlBuilder;
sqlBuilder.DeleteBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(this.CurrentConnectionConfig);
sqlBuilder.Context = reval.SqlBuilder.DeleteBuilder.Context = this.Context;
return reval;
sqlBuilder.Context = result.SqlBuilder.DeleteBuilder.Context = this.Context;
return result;
}
protected UpdateableProvider<T> CreateUpdateable<T>(T[] UpdateObjs) where T : class, new()
{
var reval = InstanceFactory.GetUpdateableProvider<T>(this.CurrentConnectionConfig);
var result = InstanceFactory.GetUpdateableProvider<T>(this.CurrentConnectionConfig);
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); ;
reval.Context = this.Context;
reval.EntityInfo = this.Context.EntityMaintenance.GetEntityInfo<T>();
reval.SqlBuilder = sqlBuilder;
reval.UpdateObjs = UpdateObjs;
sqlBuilder.UpdateBuilder = reval.UpdateBuilder = InstanceFactory.GetUpdateBuilder(this.CurrentConnectionConfig);
result.Context = this.Context;
result.EntityInfo = this.Context.EntityMaintenance.GetEntityInfo<T>();
result.SqlBuilder = sqlBuilder;
result.UpdateObjs = UpdateObjs;
sqlBuilder.UpdateBuilder = result.UpdateBuilder = InstanceFactory.GetUpdateBuilder(this.CurrentConnectionConfig);
sqlBuilder.UpdateBuilder.Builder = sqlBuilder;
sqlBuilder.UpdateBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(this.CurrentConnectionConfig);
sqlBuilder.Context = reval.SqlBuilder.UpdateBuilder.Context = this.Context;
reval.Init();
return reval;
sqlBuilder.Context = result.SqlBuilder.UpdateBuilder.Context = this.Context;
result.Init();
return result;
}
protected void CreateQueryJoin<T>(Expression joinExpression, Type[] types, ISugarQueryable<T> queryable) where T : class, new()

View File

@@ -23,7 +23,7 @@ namespace SqlSugar
void RemoveCacheAll();
void RemoveCacheAll<T>();
void RemoveCache<T>(string key);
KeyValuePair<string, SugarParameter[]> ConditionalModelToSql(List<ConditionalModel> models);
KeyValuePair<string, SugarParameter[]> ConditionalModelToSql(List<IConditionalModel> models,int beginIndex=0);
}
}

View File

@@ -9,15 +9,15 @@ namespace SqlSugar
SqlSugarClient Context { get; set; }
#region DML
List<DbTableInfo> GetViewInfoList();
List<DbTableInfo> GetTableInfoList();
List<DbColumnInfo> GetColumnInfosByTableName(string tableName);
List<DbTableInfo> GetViewInfoList(bool isCache=true);
List<DbTableInfo> GetTableInfoList(bool isCache=true);
List<DbColumnInfo> GetColumnInfosByTableName(string tableName,bool isCache=true);
List<string> GetIsIdentities(string tableName);
List<string> GetPrimaries(string tableName);
#endregion
#region Check
bool IsAnyTable(string tableName);
bool IsAnyTable(string tableName, bool isCache = true);
bool IsAnyColumn(string tableName, string column);
bool IsPrimaryKey(string tableName, string column);
bool IsIdentity(string tableName, string column);

View File

@@ -25,14 +25,14 @@ namespace SqlSugar
ISugarQueryable<T> AddJoinInfo(string tableName, string shortName, string joinWhere, JoinType type = JoinType.Left);
ISugarQueryable<T> Where(Expression<Func<T, bool>> expression);
ISugarQueryable<T> Where(string whereString, object whereObj = null);
ISugarQueryable<T> Where(List<ConditionalModel> conditionalModels);
ISugarQueryable<T> Where(string whereString, object parameters = null);
ISugarQueryable<T> Where(List<IConditionalModel> conditionalModels);
ISugarQueryable<T> Having(Expression<Func<T, bool>> expression);
ISugarQueryable<T> Having(string whereString, object whereObj = null);
ISugarQueryable<T> Having(string whereString, object parameters = null);
ISugarQueryable<T> WhereIF(bool isWhere, Expression<Func<T, bool>> expression);
ISugarQueryable<T> WhereIF(bool isWhere, string whereString, object whereObj = null);
ISugarQueryable<T> WhereIF(bool isWhere, string whereString, object parameters = null);
T InSingle(object pkValue);
ISugarQueryable<T> In<TParamter>(params TParamter[] pkValues);
@@ -132,7 +132,7 @@ namespace SqlSugar
#region Where
new ISugarQueryable<T, T2> Where(Expression<Func<T, bool>> expression);
ISugarQueryable<T, T2> Where(Expression<Func<T, T2, bool>> expression);
new ISugarQueryable<T, T2> Where(List<ConditionalModel> conditionalModels);
new ISugarQueryable<T, T2> Where(List<IConditionalModel> conditionalModels);
new ISugarQueryable<T, T2> WhereIF(bool isWhere, Expression<Func<T, bool>> expression);
ISugarQueryable<T, T2> WhereIF(bool isWhere, Expression<Func<T, T2, bool>> expression);
@@ -194,14 +194,14 @@ namespace SqlSugar
new ISugarQueryable<T, T2, T3> Where(Expression<Func<T, bool>> expression);
ISugarQueryable<T, T2, T3> Where(Expression<Func<T, T2, bool>> expression);
ISugarQueryable<T, T2, T3> Where(Expression<Func<T, T2, T3, bool>> expression);
new ISugarQueryable<T, T2, T3> Where(List<ConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3> Where(List<IConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3> WhereIF(bool isWhere, Expression<Func<T, bool>> expression);
ISugarQueryable<T, T2, T3> WhereIF(bool isWhere, Expression<Func<T, T2, bool>> expression);
ISugarQueryable<T, T2, T3> WhereIF(bool isWhere, Expression<Func<T, T2, T3, bool>> expression);
new ISugarQueryable<T, T2, T3> Where(string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3> WhereIF(bool isWhere, string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3> Where(string whereString, object parameters = null);
new ISugarQueryable<T, T2, T3> WhereIF(bool isWhere, string whereString, object parameters = null);
#endregion
#region Select
@@ -226,7 +226,7 @@ namespace SqlSugar
new ISugarQueryable<T, T2, T3> Having(Expression<Func<T, bool>> expression);
ISugarQueryable<T, T2, T3> Having(Expression<Func<T, T2, bool>> expression);
ISugarQueryable<T, T2, T3> Having(Expression<Func<T, T2, T3, bool>> expression);
new ISugarQueryable<T, T2, T3> Having(string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3> Having(string whereString, object parameters = null);
#endregion
#region Aggr
@@ -262,15 +262,15 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4> Where(Expression<Func<T, T2, bool>> expression);
ISugarQueryable<T, T2, T3, T4> Where(Expression<Func<T, T2, T3, bool>> expression);
ISugarQueryable<T, T2, T3, T4> Where(Expression<Func<T, T2, T3, T4, bool>> expression);
new ISugarQueryable<T, T2, T3, T4> Where(List<ConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4> Where(List<IConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4> WhereIF(bool isWhere, Expression<Func<T, bool>> expression);
ISugarQueryable<T, T2, T3, T4> WhereIF(bool isWhere, Expression<Func<T, T2, bool>> expression);
ISugarQueryable<T, T2, T3, T4> WhereIF(bool isWhere, Expression<Func<T, T2, T3, bool>> expression);
ISugarQueryable<T, T2, T3, T4> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, bool>> expression);
new ISugarQueryable<T, T2, T3, T4> Where(string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4> WhereIF(bool isWhere, string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4> Where(string whereString, object parameters = null);
new ISugarQueryable<T, T2, T3, T4> WhereIF(bool isWhere, string whereString, object parameters = null);
#endregion
#region Select
@@ -300,7 +300,7 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4> Having(Expression<Func<T, T2, bool>> expression);
ISugarQueryable<T, T2, T3, T4> Having(Expression<Func<T, T2, T3, bool>> expression);
ISugarQueryable<T, T2, T3, T4> Having(Expression<Func<T, T2, T3, T4, bool>> expression);
new ISugarQueryable<T, T2, T3, T4> Having(string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4> Having(string whereString, object parameters = null);
#endregion
#region Aggr
@@ -337,7 +337,7 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5> Where(Expression<Func<T, T2, T3, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5> Where(Expression<Func<T, T2, T3, T4, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5> Where(Expression<Func<T, T2, T3, T4, T5, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5> Where(List<ConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5> Where(List<IConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5> WhereIF(bool isWhere, Expression<Func<T, bool>> expression);
@@ -346,8 +346,8 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, T5, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5> Where(string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5> WhereIF(bool isWhere, string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5> Where(string whereString, object parameters = null);
new ISugarQueryable<T, T2, T3, T4, T5> WhereIF(bool isWhere, string whereString, object parameters = null);
#endregion
#region Select
@@ -414,7 +414,7 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5, T6> Where(Expression<Func<T, T2, T3, T4, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6> Where(Expression<Func<T, T2, T3, T4, T5, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6> Where(Expression<Func<T, T2, T3, T4, T5, T6, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5, T6> Where(List<ConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5, T6> Where(List<IConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5, T6> WhereIF(bool isWhere, Expression<Func<T, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6> WhereIF(bool isWhere, Expression<Func<T, T2, bool>> expression);
@@ -423,8 +423,8 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5, T6> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, T5, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, T5, T6, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5, T6> Where(string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6> WhereIF(bool isWhere, string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6> Where(string whereString, object parameters = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6> WhereIF(bool isWhere, string whereString, object parameters = null);
#endregion
#region Select
@@ -489,7 +489,7 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Where(Expression<Func<T, T2, T3, T4, T5, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Where(Expression<Func<T, T2, T3, T4, T5, T6, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Where(Expression<Func<T, T2, T3, T4, T5, T6, T7, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Where(List<ConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Where(List<IConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> WhereIF(bool isWhere, Expression<Func<T, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7> WhereIF(bool isWhere, Expression<Func<T, T2, bool>> expression);
@@ -499,8 +499,8 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5, T6, T7> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, T5, T6, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, T5, T6, T7, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Where(string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> WhereIF(bool isWhere, string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> Where(string whereString, object parameters = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7> WhereIF(bool isWhere, string whereString, object parameters = null);
#endregion
#region Select
@@ -569,7 +569,7 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Where(Expression<Func<T, T2, T3, T4, T5, T6, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Where(Expression<Func<T, T2, T3, T4, T5, T6, T7, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Where(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Where(List<ConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Where(List<IConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> WhereIF(bool isWhere, Expression<Func<T, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> WhereIF(bool isWhere, Expression<Func<T, T2, bool>> expression);
@@ -580,8 +580,8 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, T5, T6, T7, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Where(string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> WhereIF(bool isWhere, string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> Where(string whereString, object parameters = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8> WhereIF(bool isWhere, string whereString, object parameters = null);
#endregion
#region Select
@@ -656,7 +656,7 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Where(Expression<Func<T, T2, T3, T4, T5, T6, T7, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Where(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Where(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Where(List<ConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Where(List<IConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> WhereIF(bool isWhere, Expression<Func<T, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> WhereIF(bool isWhere, Expression<Func<T, T2, bool>> expression);
@@ -668,8 +668,8 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Where(string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> WhereIF(bool isWhere, string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> Where(string whereString, object parameters = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9> WhereIF(bool isWhere, string whereString, object parameters = null);
#endregion
#region Select
@@ -746,7 +746,7 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Where(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Where(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Where(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Where(List<ConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Where(List<IConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> WhereIF(bool isWhere, Expression<Func<T, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> WhereIF(bool isWhere, Expression<Func<T, T2, bool>> expression);
@@ -759,8 +759,8 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Where(string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> WhereIF(bool isWhere, string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> Where(string whereString, object parameters = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10> WhereIF(bool isWhere, string whereString, object parameters = null);
#endregion
#region Select
@@ -841,7 +841,7 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Where(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Where(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Where(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Where(List<ConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Where(List<IConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> WhereIF(bool isWhere, Expression<Func<T, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> WhereIF(bool isWhere, Expression<Func<T, T2, bool>> expression);
@@ -855,8 +855,8 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Where(string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> WhereIF(bool isWhere, string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Where(string whereString, object parameters = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> WhereIF(bool isWhere, string whereString, object parameters = null);
#endregion
#region Select
@@ -941,7 +941,7 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Where(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Where(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Where(Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Where(List<ConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Where(List<IConditionalModel> conditionalModels);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> WhereIF(bool isWhere, Expression<Func<T, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> WhereIF(bool isWhere, Expression<Func<T, T2, bool>> expression);
@@ -956,8 +956,8 @@ namespace SqlSugar
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, bool>> expression);
ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> WhereIF(bool isWhere, Expression<Func<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, bool>> expression);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Where(string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> WhereIF(bool isWhere, string whereString, object whereObj = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Where(string whereString, object parameters = null);
new ISugarQueryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> WhereIF(bool isWhere, string whereString, object parameters = null);
#endregion
#region Select

View File

@@ -24,6 +24,7 @@ namespace SqlSugar
string SqlParameterKeyWord { get; }
string SqlFalse { get; }
string SqlDateNow { get; }
string FullSqlDateNow { get; }
string SqlTranslationLeft { get; }
string SqlTranslationRight { get; }
string SqlSelectAll { get; }

View File

@@ -20,7 +20,7 @@ namespace SqlSugar
columns.Add(dbColumnInfo);
}
}
this.Context.DbMaintenance.CreateTable(tableName, columns);
this.Context.DbMaintenance.CreateTable(tableName, columns,true);
}
protected override DbColumnInfo EntityColumnToDbColumn(EntityInfo entityInfo, string tableName, EntityColumnInfo item)
{

View File

@@ -185,7 +185,7 @@ namespace SqlSugar
{
foreach (var item in columns)
{
if (item.DbColumnName.Equals("GUID",StringComparison.CurrentCultureIgnoreCase)&&item.Length==0)
if (item.DbColumnName.Equals("GUID", StringComparison.CurrentCultureIgnoreCase) && item.Length == 0)
{
item.Length = 10;
}
@@ -193,8 +193,9 @@ namespace SqlSugar
}
string sql = GetCreateTableSql(tableName, columns);
string primaryKeyInfo = null;
if (columns.Any(it => it.IsPrimarykey)) {
primaryKeyInfo =string.Format( ", Primary key({0})",string.Join(",",columns.Where(it=>it.IsPrimarykey).Select(it=>this.SqlBuilder.GetTranslationColumnName(it.DbColumnName))));
if (columns.Any(it => it.IsPrimarykey) && isCreatePrimaryKey)
{
primaryKeyInfo = string.Format(", Primary key({0})", string.Join(",", columns.Where(it => it.IsPrimarykey).Select(it => this.SqlBuilder.GetTranslationColumnName(it.DbColumnName))));
}
sql = sql.Replace("$PrimaryKey", primaryKeyInfo);

View File

@@ -7,6 +7,20 @@ namespace SqlSugar
public class MySqlBuilder : SqlBuilderProvider
{
public override string SqlTranslationLeft { get { return "`"; } }
public override string SqlTranslationRight { get { return "`"; } }
public override string SqlTranslationRight { get { return "`"; } }
public override string SqlDateNow
{
get
{
return "sysdate()";
}
}
public override string FullSqlDateNow
{
get
{
return "select sysdate()";
}
}
}
}

View File

@@ -71,20 +71,20 @@ namespace SqlSugar
{
get
{
string reval = string.Empty;
string result = string.Empty;
if (this.SelectValue == null || this.SelectValue is string)
{
reval = GetSelectValueByString();
result = GetSelectValueByString();
}
else
{
reval = GetSelectValueByExpression();
result = GetSelectValueByExpression();
}
if (this.SelectType == ResolveExpressType.SelectMultiple)
{
this.SelectCacheKey = this.SelectCacheKey + string.Join("-", this.JoinQueryInfos.Select(it => it.TableName));
}
return reval;
return result;
}
}

View File

@@ -169,10 +169,15 @@ namespace SqlSugar
return "IDENTITY(1,1)";
}
}
public override bool CreateTable(string tableName, List<DbColumnInfo> columns, bool isCreatePrimaryKey = true)
{
throw new NotImplementedException();
}
#endregion
#region Methods
public override List<DbColumnInfo> GetColumnInfosByTableName(string tableName)
public override List<DbColumnInfo> GetColumnInfosByTableName(string tableName,bool isCache)
{
string cacheKey = "DbMaintenanceProvider.GetColumnInfosByTableName." + this.SqlBuilder.GetNoTranslationColumnName(tableName).ToLower();
cacheKey = GetCacheKey(cacheKey);

View File

@@ -201,5 +201,20 @@ namespace SqlSugar
}
}
#endregion
public override bool CreateTable(string tableName, List<DbColumnInfo> columns, bool isCreatePrimaryKey = true)
{
tableName = this.SqlBuilder.GetTranslationTableName(tableName);
string sql = GetCreateTableSql(tableName, columns);
this.Context.Ado.ExecuteCommand(sql);
if (isCreatePrimaryKey) {
var pkColumns = columns.Where(it => it.IsPrimarykey).ToList();
foreach (var item in pkColumns)
{
this.Context.DbMaintenance.AddPrimaryKey(tableName, item.DbColumnName);
}
}
return true;
}
}
}

View File

@@ -39,7 +39,7 @@ namespace SqlSugar
columns.Add(dbColumnInfo);
}
}
this.Context.DbMaintenance.CreateTable(tableName, columns);
this.Context.DbMaintenance.CreateTable(tableName, columns,true);
}
protected override DbColumnInfo EntityColumnToDbColumn(EntityInfo entityInfo, string tableName, EntityColumnInfo item)
{

View File

@@ -165,45 +165,56 @@ namespace SqlSugar
#endregion
#region Methods
public override List<DbColumnInfo> GetColumnInfosByTableName(string tableName)
public override List<DbColumnInfo> GetColumnInfosByTableName(string tableName,bool isCache=true)
{
string cacheKey = "DbMaintenanceProvider.GetColumnInfosByTableName." + this.SqlBuilder.GetNoTranslationColumnName(tableName).ToLower();
cacheKey = GetCacheKey(cacheKey);
return this.Context.Utilities.GetReflectionInoCacheInstance().GetOrCreate<List<DbColumnInfo>>(cacheKey,() =>
{
string sql = "PRAGMA table_info(" + tableName + ")";
var oldIsEnableLog = this.Context.Ado.IsEnableLogEvent;
this.Context.Ado.IsEnableLogEvent = false;
using (DbDataReader dataReader = (SqliteDataReader)this.Context.Ado.GetDataReader(sql))
{
List<DbColumnInfo> result = new List<DbColumnInfo>();
while (dataReader.Read())
{
var type = dataReader.GetValue(2).ObjToString();
var length = 0;
if (type.Contains("("))
{
type = type.Split('(').First();
length = type.Split('(').Last().TrimEnd(')').ObjToInt();
}
DbColumnInfo column = new DbColumnInfo()
{
TableName = tableName,
DataType = type,
IsNullable = !dataReader.GetBoolean(3),
IsIdentity = dataReader.GetBoolean(3) && dataReader.GetBoolean(5).ObjToBool() && (type.IsIn("integer", "int", "int32", "int64", "long")),
ColumnDescription = null,
DbColumnName = dataReader.GetString(1),
DefaultValue = dataReader.GetValue(4).ObjToString(),
IsPrimarykey = dataReader.GetBoolean(5).ObjToBool(),
Length = length
};
result.Add(column);
}
return result;
}
if (isCache)
{
return this.Context.Utilities.GetReflectionInoCacheInstance().GetOrCreate<List<DbColumnInfo>>(cacheKey, () =>
{
return GetColumnInfosByTableName(tableName);
});
});
}
else {
return GetColumnInfosByTableName(tableName);
}
}
private List<DbColumnInfo> GetColumnInfosByTableName(string tableName)
{
string sql = "PRAGMA table_info(" + tableName + ")";
var oldIsEnableLog = this.Context.Ado.IsEnableLogEvent;
this.Context.Ado.IsEnableLogEvent = false;
using (DbDataReader dataReader = (SqliteDataReader)this.Context.Ado.GetDataReader(sql))
{
List<DbColumnInfo> result = new List<DbColumnInfo>();
while (dataReader.Read())
{
var type = dataReader.GetValue(2).ObjToString();
var length = 0;
if (type.Contains("("))
{
type = type.Split('(').First();
length = type.Split('(').Last().TrimEnd(')').ObjToInt();
}
DbColumnInfo column = new DbColumnInfo()
{
TableName = tableName,
DataType = type,
IsNullable = !dataReader.GetBoolean(3),
IsIdentity = dataReader.GetBoolean(3) && dataReader.GetBoolean(5).ObjToBool() && (type.IsIn("integer", "int", "int32", "int64", "long")),
ColumnDescription = null,
DbColumnName = dataReader.GetString(1),
DefaultValue = dataReader.GetValue(4).ObjToString(),
IsPrimarykey = dataReader.GetBoolean(5).ObjToBool(),
Length = length
};
result.Add(column);
}
return result;
}
}
public override bool CreateTable(string tableName, List<DbColumnInfo> columns,bool isCreatePrimaryKey=true)
@@ -224,6 +235,10 @@ namespace SqlSugar
}
}
string sql = GetCreateTableSql(tableName, columns);
if (!isCreatePrimaryKey)
{
sql = sql.Replace("PRIMARY KEY AUTOINCREMENT", "").Replace("PRIMARY KEY", "");
}
this.Context.Ado.ExecuteCommand(sql);
return true;
}

View File

@@ -8,5 +8,19 @@ namespace SqlSugar
{
public override string SqlTranslationLeft { get { return "`"; } }
public override string SqlTranslationRight { get { return "`"; } }
public override string SqlDateNow
{
get
{
return "DATETIME('now') ";
}
}
public override string FullSqlDateNow
{
get
{
return "select DATETIME('now') ";
}
}
}
}

View File

@@ -39,6 +39,17 @@ namespace SqlSugar
page.PageCount = count;
return result;
}
public List<T> GetPageList<T>(List<IConditionalModel> conditionalList, PageModel page) where T : class, new()
{
int count = 0;
var result = Context.Queryable<T>().Where(conditionalList).ToPageList(page.PageIndex, page.PageSize, ref count);
page.PageCount = count;
return result;
}
public bool IsAny<T>(Expression<Func<T, bool>> whereExpression) where T : class, new()
{
return Context.Queryable<T>().Where(whereExpression).Any();
}
public bool Insert<T>(T insertObj) where T : class, new()
{
return this.Context.Insertable(insertObj).ExecuteCommand() > 0;
@@ -113,6 +124,17 @@ namespace SqlSugar
page.PageCount = count;
return result;
}
public List<T> GetPageList(List<IConditionalModel> conditionalList, PageModel page)
{
int count = 0;
var result = Context.Queryable<T>().Where(conditionalList).ToPageList(page.PageIndex, page.PageSize, ref count);
page.PageCount = count;
return result;
}
public bool IsAny(Expression<Func<T, bool>> whereExpression)
{
return Context.Queryable<T>().Where(whereExpression).Any();
}
public bool Insert(T insertObj)
{
return this.Context.Insertable(insertObj).ExecuteCommand() > 0;

View File

@@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Version>4.6.4.3</Version>
<Version>4.6.4.6</Version>
<Copyright>sun_kai_xuan</Copyright>
<PackageProjectUrl>https://github.com/sunkaixuan/SqlSugar</PackageProjectUrl>
<PackageLicenseUrl></PackageLicenseUrl>
@@ -20,9 +20,4 @@
<PackageReference Include="System.Reflection.Emit.Lightweight" Version="4.3.0" />
</ItemGroup>
<ItemGroup>
<Folder Include="Realization\PostgreSQL\DbMaintenance\" />
<Folder Include="Realization\PostgreSQL\SqlBuilder\" />
</ItemGroup>
</Project>

View File

@@ -55,10 +55,10 @@ namespace SqlSugar
{
if (this.ContextAdo == null)
{
var reval = InstanceFactory.GetAdo(this.Context.CurrentConnectionConfig);
this.ContextAdo = reval;
reval.Context = this.Context;
return reval;
var result = InstanceFactory.GetAdo(this.Context.CurrentConnectionConfig);
this.ContextAdo = result;
result.Context = this.Context;
return result;
}
return this.Context._Ado;
}
@@ -93,6 +93,14 @@ namespace SqlSugar
#region Queryable
/// <summary>
/// Get datebase time
/// </summary>
/// <returns></returns>
public DateTime GetDate() {
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig);
return this.Ado.GetDateTime(sqlBuilder.FullSqlDateNow);
}
/// <summary>
/// Lambda Query operation
/// </summary>
public virtual ISugarQueryable<T> Queryable<T>() where T : class, new()
@@ -393,7 +401,7 @@ namespace SqlSugar
public ISugarQueryable<T> SqlQueryable<T>(string sql) where T : class, new()
{
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig);
return this.Context.Queryable<T>().AS(sqlBuilder.GetPackTable(sql, sqlBuilder.GetDefaultShortName())).With(SqlWith.Null).Select("*");
return this.Context.Queryable<T>().AS(sqlBuilder.GetPackTable(sql, sqlBuilder.GetDefaultShortName())).With(SqlWith.Null).Select(sqlBuilder.GetDefaultShortName()+".*");
}
#endregion
@@ -401,8 +409,8 @@ namespace SqlSugar
public virtual IInsertable<T> Insertable<T>(T[] insertObjs) where T : class, new()
{
InitMppingInfo<T>();
InsertableProvider<T> reval = this.CreateInsertable(insertObjs);
return reval;
InsertableProvider<T> result = this.CreateInsertable(insertObjs);
return result;
}
public virtual IInsertable<T> Insertable<T>(List<T> insertObjs) where T : class, new()
{
@@ -442,8 +450,8 @@ namespace SqlSugar
public virtual IDeleteable<T> Deleteable<T>() where T : class, new()
{
InitMppingInfo<T>();
DeleteableProvider<T> reval = this.CreateDeleteable<T>();
return reval;
DeleteableProvider<T> result = this.CreateDeleteable<T>();
return result;
}
public virtual IDeleteable<T> Deleteable<T>(Expression<Func<T, bool>> expression) where T : class, new()
{
@@ -481,8 +489,8 @@ namespace SqlSugar
public virtual IUpdateable<T> Updateable<T>(T[] UpdateObjs) where T : class, new()
{
InitMppingInfo<T>();
UpdateableProvider<T> reval = this.CreateUpdateable(UpdateObjs);
return reval;
UpdateableProvider<T> result = this.CreateUpdateable(UpdateObjs);
return result;
}
public virtual IUpdateable<T> Updateable<T>(List<T> UpdateObjs) where T : class, new()
{
@@ -628,6 +636,11 @@ namespace SqlSugar
if (this.Context.Ado != null)
this.Context.Ado.Close();
}
public virtual void Open()
{
if (this.Context.Ado != null)
this.Context.Ado.Open();
}
public virtual void Dispose()
{
if (this.Context.Ado != null)

View File

@@ -2,7 +2,7 @@
<package >
<metadata>
<id>sqlSugarCore</id>
<version>4.6.4.3</version>
<version>4.6.4.6</version>
<authors>sunkaixuan</authors>
<owners>Landa</owners>
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl>