mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-22 20:13:41 +08:00
Update Core
This commit is contained in:
@@ -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 });
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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"))
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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)
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
}
|
||||
|
@@ -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()
|
||||
{
|
||||
|
@@ -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
|
||||
{
|
||||
|
@@ -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
|
||||
}
|
||||
|
@@ -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()
|
||||
{
|
||||
|
@@ -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);
|
||||
|
@@ -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()
|
||||
{
|
||||
|
@@ -18,6 +18,7 @@ namespace SqlSugar
|
||||
LikeLeft=8,
|
||||
LikeRight=9,
|
||||
NoEqual=10,
|
||||
IsNullOrEmpty=11
|
||||
IsNullOrEmpty=11,
|
||||
IsNot=12
|
||||
}
|
||||
}
|
||||
|
13
Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Enum/WhereType.cs
Normal file
13
Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Enum/WhereType.cs
Normal 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
|
||||
}
|
||||
}
|
@@ -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);
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -13,5 +13,6 @@ namespace SqlSugar
|
||||
string GetValue(Expression expression);
|
||||
int Sort { get; }
|
||||
Expression Expression { get; set; }
|
||||
bool HasWhere { get; set; }
|
||||
}
|
||||
}
|
||||
|
@@ -31,6 +31,11 @@ namespace SqlSugar
|
||||
get;set;
|
||||
}
|
||||
|
||||
public bool HasWhere
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string GetValue(Expression expression)
|
||||
{
|
||||
var exp = expression as MethodCallExpression;
|
||||
|
@@ -18,6 +18,11 @@ namespace SqlSugar
|
||||
get;set;
|
||||
}
|
||||
|
||||
public bool HasWhere
|
||||
{
|
||||
get;set;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
|
@@ -8,6 +8,11 @@ namespace SqlSugar
|
||||
{
|
||||
public class SubAvg: ISubOperation
|
||||
{
|
||||
public bool HasWhere
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
|
@@ -8,6 +8,11 @@ namespace SqlSugar
|
||||
{
|
||||
public class SubBegin : ISubOperation
|
||||
{
|
||||
public bool HasWhere
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
|
@@ -8,6 +8,11 @@ namespace SqlSugar
|
||||
{
|
||||
public class SubCount: ISubOperation
|
||||
{
|
||||
public bool HasWhere
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
|
@@ -8,6 +8,11 @@ namespace SqlSugar
|
||||
{
|
||||
public class SubFromTable : ISubOperation
|
||||
{
|
||||
public bool HasWhere
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
|
@@ -8,6 +8,11 @@ namespace SqlSugar
|
||||
{
|
||||
public class SubGroupBy : ISubOperation
|
||||
{
|
||||
public bool HasWhere
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return "GroupBy"; }
|
||||
|
@@ -8,6 +8,11 @@ namespace SqlSugar
|
||||
{
|
||||
public class SubLeftBracket : ISubOperation
|
||||
{
|
||||
public bool HasWhere
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public ExpressionContext Context
|
||||
{
|
||||
get;set;
|
||||
|
@@ -8,6 +8,11 @@ namespace SqlSugar
|
||||
{
|
||||
public class SubMax:ISubOperation
|
||||
{
|
||||
public bool HasWhere
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
|
@@ -8,6 +8,11 @@ namespace SqlSugar
|
||||
{
|
||||
public class SubMin: ISubOperation
|
||||
{
|
||||
public bool HasWhere
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
|
@@ -8,6 +8,11 @@ namespace SqlSugar
|
||||
{
|
||||
public class SubNotAny : ISubOperation
|
||||
{
|
||||
public bool HasWhere
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public ExpressionContext Context
|
||||
{
|
||||
get;set;
|
||||
|
@@ -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"; }
|
||||
|
@@ -8,6 +8,11 @@ namespace SqlSugar
|
||||
{
|
||||
public class SubRightBracket : ISubOperation
|
||||
{
|
||||
public bool HasWhere
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public ExpressionContext Context
|
||||
{
|
||||
get;set;
|
||||
|
@@ -8,6 +8,11 @@ namespace SqlSugar
|
||||
{
|
||||
public class SubSelect : ISubOperation
|
||||
{
|
||||
public bool HasWhere
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
|
@@ -8,6 +8,11 @@ namespace SqlSugar
|
||||
{
|
||||
public class SubSelectDefault : ISubOperation
|
||||
{
|
||||
public bool HasWhere
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public ExpressionContext Context
|
||||
{
|
||||
get;set;
|
||||
|
@@ -8,6 +8,11 @@ namespace SqlSugar
|
||||
{
|
||||
public class SubSum:ISubOperation
|
||||
{
|
||||
public bool HasWhere
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
|
@@ -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
|
||||
{
|
||||
|
@@ -8,6 +8,11 @@ namespace SqlSugar
|
||||
{
|
||||
public class SubWhere: ISubOperation
|
||||
{
|
||||
public bool HasWhere
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return "Where"; }
|
||||
|
@@ -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;
|
||||
|
@@ -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());
|
||||
|
@@ -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()
|
||||
|
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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
|
||||
|
@@ -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; }
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -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);
|
||||
|
@@ -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()";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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') ";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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>
|
||||
|
@@ -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)
|
||||
|
@@ -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>
|
||||
|
Binary file not shown.
Reference in New Issue
Block a user