mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-23 04:23:47 +08:00
Merge branch 'dev' of https://github.com/sunkaixuan/SqlSugar
This commit is contained in:
@@ -229,6 +229,13 @@ namespace OrmTest.Demo
|
|||||||
.OrderBy((st, sc) => sc.Id, OrderByType.Desc)
|
.OrderBy((st, sc) => sc.Id, OrderByType.Desc)
|
||||||
.Select((st, sc) => new ViewModelStudent { Name = st.Name, SchoolId = sc.Id }).ToList();
|
.Select((st, sc) => new ViewModelStudent { Name = st.Name, SchoolId = sc.Id }).ToList();
|
||||||
|
|
||||||
|
|
||||||
|
//join 2
|
||||||
|
var list4_1 = db.Queryable<Student, School>((st, sc) => new object[] {
|
||||||
|
JoinType.Left,st.SchoolId==sc.Id&& st.Name == "jack"
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
|
|
||||||
//The simple use of Join 2 table
|
//The simple use of Join 2 table
|
||||||
var list5 = db.Queryable<Student, School>((st, sc) => st.SchoolId == sc.Id).Select((st,sc)=>new {st.Name,st.Id,schoolName=sc.Name}).ToList();
|
var list5 = db.Queryable<Student, School>((st, sc) => st.SchoolId == sc.Id).Select((st,sc)=>new {st.Name,st.Id,schoolName=sc.Name}).ToList();
|
||||||
|
|
||||||
|
@@ -22,6 +22,10 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public void InitTables(Type entityType)
|
public void InitTables(Type entityType)
|
||||||
{
|
{
|
||||||
|
if (!this.Context.DbMaintenance.IsAnySystemTablePermissions())
|
||||||
|
{
|
||||||
|
Check.Exception(true, "Dbfirst and Codefirst requires system table permissions");
|
||||||
|
}
|
||||||
Check.Exception(this.Context.IsSystemTablesConfig, "Please set SqlSugarClent Parameter ConnectionConfig.InitKeyType=InitKeyType.Attribute ");
|
Check.Exception(this.Context.IsSystemTablesConfig, "Please set SqlSugarClent Parameter ConnectionConfig.InitKeyType=InitKeyType.Attribute ");
|
||||||
var executeResult = Context.Ado.UseTran(() =>
|
var executeResult = Context.Ado.UseTran(() =>
|
||||||
{
|
{
|
||||||
|
@@ -39,6 +39,9 @@ namespace SqlSugar
|
|||||||
|
|
||||||
public void Init()
|
public void Init()
|
||||||
{
|
{
|
||||||
|
if (!this.Context.DbMaintenance.IsAnySystemTablePermissions()) {
|
||||||
|
Check.Exception(true, "Dbfirst and Codefirst requires system table permissions");
|
||||||
|
}
|
||||||
this.TableInfoList =this.Context.RewritableMethods.TranslateCopy(this.Context.DbMaintenance.GetTableInfoList());
|
this.TableInfoList =this.Context.RewritableMethods.TranslateCopy(this.Context.DbMaintenance.GetTableInfoList());
|
||||||
var viewList = this.Context.RewritableMethods.TranslateCopy(this.Context.DbMaintenance.GetViewInfoList());
|
var viewList = this.Context.RewritableMethods.TranslateCopy(this.Context.DbMaintenance.GetViewInfoList());
|
||||||
if (viewList.IsValuable())
|
if (viewList.IsValuable())
|
||||||
|
@@ -36,13 +36,31 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public virtual List<string> GetIsIdentities(string tableName)
|
public virtual List<string> GetIsIdentities(string tableName)
|
||||||
{
|
{
|
||||||
var result = GetColumnInfosByTableName(tableName).Where(it => it.IsIdentity).ToList();
|
string cacheKey = "DbMaintenanceProvider.GetIsIdentities" + tableName.ToLower();
|
||||||
return result.Select(it => it.DbColumnName).ToList();
|
return this.Context.RewritableMethods.GetCacheInstance<List<string>>().Func(cacheKey,
|
||||||
|
(cm, key) =>
|
||||||
|
{
|
||||||
|
return cm[cacheKey];
|
||||||
|
|
||||||
|
}, (cm, key) =>
|
||||||
|
{
|
||||||
|
var result = GetColumnInfosByTableName(tableName).Where(it => it.IsIdentity).ToList();
|
||||||
|
return result.Select(it => it.DbColumnName).ToList();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
public virtual List<string> GetPrimaries(string tableName)
|
public virtual List<string> GetPrimaries(string tableName)
|
||||||
{
|
{
|
||||||
var result = GetColumnInfosByTableName(tableName).Where(it => it.IsPrimarykey).ToList();
|
string cacheKey = "DbMaintenanceProvider.GetPrimaries" + tableName.ToLower();
|
||||||
return result.Select(it => it.DbColumnName).ToList();
|
return this.Context.RewritableMethods.GetCacheInstance<List<string>>().Func(cacheKey,
|
||||||
|
(cm, key) =>
|
||||||
|
{
|
||||||
|
return cm[cacheKey];
|
||||||
|
|
||||||
|
}, (cm, key) =>
|
||||||
|
{
|
||||||
|
var result = GetColumnInfosByTableName(tableName).Where(it => it.IsPrimarykey).ToList();
|
||||||
|
return result.Select(it => it.DbColumnName).ToList();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -81,6 +99,19 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
return this.Context.Ado.GetInt("select object_id('" + constraintName + "')") > 0;
|
return this.Context.Ado.GetInt("select object_id('" + constraintName + "')") > 0;
|
||||||
}
|
}
|
||||||
|
public virtual bool IsAnySystemTablePermissions()
|
||||||
|
{
|
||||||
|
string sql = this.CheckSystemTablePermissionsSql;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.Context.Ado.ExecuteCommand(sql);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region DDL
|
#region DDL
|
||||||
|
@@ -32,6 +32,10 @@ namespace SqlSugar
|
|||||||
protected abstract string RenameColumnSql { get; }
|
protected abstract string RenameColumnSql { get; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Check
|
||||||
|
protected abstract string CheckSystemTablePermissionsSql { get; }
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Scattered
|
#region Scattered
|
||||||
protected abstract string CreateTableNull { get; }
|
protected abstract string CreateTableNull { get; }
|
||||||
protected abstract string CreateTableNotNull { get; }
|
protected abstract string CreateTableNotNull { get; }
|
||||||
|
@@ -20,6 +20,7 @@ namespace SqlSugar
|
|||||||
internal static Type BoolType = typeof(bool);
|
internal static Type BoolType = typeof(bool);
|
||||||
internal static Type ObjType = typeof(object);
|
internal static Type ObjType = typeof(object);
|
||||||
internal static Type DobType = typeof(double);
|
internal static Type DobType = typeof(double);
|
||||||
|
internal static Type FloatType=typeof(float);
|
||||||
internal static Type ModelType= typeof(ModelContext);
|
internal static Type ModelType= typeof(ModelContext);
|
||||||
internal static Type DicSS = typeof(KeyValuePair<string, string>);
|
internal static Type DicSS = typeof(KeyValuePair<string, string>);
|
||||||
internal static Type DicSi = typeof(KeyValuePair<string, int>);
|
internal static Type DicSi = typeof(KeyValuePair<string, int>);
|
||||||
|
@@ -55,6 +55,18 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
this.DbType = System.Data.DbType.Double;
|
this.DbType = System.Data.DbType.Double;
|
||||||
}
|
}
|
||||||
|
else if (type == PubConst.DecType)
|
||||||
|
{
|
||||||
|
this.DbType = System.Data.DbType.Decimal;
|
||||||
|
}
|
||||||
|
else if (type == PubConst.ByteType)
|
||||||
|
{
|
||||||
|
this.DbType = System.Data.DbType.Byte;
|
||||||
|
}
|
||||||
|
else if (type == PubConst.FloatType)
|
||||||
|
{
|
||||||
|
this.DbType = System.Data.DbType.Single;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public SugarParameter(string name, object value, bool isOutput)
|
public SugarParameter(string name, object value, bool isOutput)
|
||||||
{
|
{
|
||||||
|
@@ -22,6 +22,7 @@ namespace SqlSugar
|
|||||||
bool IsPrimaryKey(string tableName, string column);
|
bool IsPrimaryKey(string tableName, string column);
|
||||||
bool IsIdentity(string tableName, string column);
|
bool IsIdentity(string tableName, string column);
|
||||||
bool IsAnyConstraint(string ConstraintName);
|
bool IsAnyConstraint(string ConstraintName);
|
||||||
|
bool IsAnySystemTablePermissions();
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region DDL
|
#region DDL
|
||||||
|
@@ -152,13 +152,25 @@ namespace SqlSugar
|
|||||||
return "ALTER TABLE {0} DROP CONSTRAINT {1}";
|
return "ALTER TABLE {0} DROP CONSTRAINT {1}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
protected override string RenameColumnSql {
|
protected override string RenameColumnSql
|
||||||
get {
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
return "exec sp_rename '{0}.{1}','{2}','column';";
|
return "exec sp_rename '{0}.{1}','{2}','column';";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Check
|
||||||
|
protected override string CheckSystemTablePermissionsSql
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return "select top 1 id from sysobjects";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Scattered
|
#region Scattered
|
||||||
protected override string CreateTableNull
|
protected override string CreateTableNull
|
||||||
{
|
{
|
||||||
|
@@ -181,8 +181,12 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
this.CreateQueryable<T>(queryable);
|
this.CreateQueryable<T>(queryable);
|
||||||
string shortName = string.Empty;
|
string shortName = string.Empty;
|
||||||
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = this.GetJoinInfos(joinExpression, ref shortName, types);
|
List<SugarParameter> paramters =new List<SugarParameter>();
|
||||||
|
queryable.SqlBuilder.QueryBuilder.JoinQueryInfos = this.GetJoinInfos(joinExpression,ref paramters, ref shortName, types);
|
||||||
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
|
queryable.SqlBuilder.QueryBuilder.TableShortName = shortName;
|
||||||
|
if (paramters != null) {
|
||||||
|
queryable.SqlBuilder.QueryBuilder.Parameters.AddRange(paramters);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
protected void CreateEasyQueryJoin<T>(Expression joinExpression, Type[] types, ISugarQueryable<T> queryable) where T : class, new()
|
protected void CreateEasyQueryJoin<T>(Expression joinExpression, Type[] types, ISugarQueryable<T> queryable) where T : class, new()
|
||||||
{
|
{
|
||||||
@@ -194,7 +198,7 @@ namespace SqlSugar
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Private methods
|
#region Private methods
|
||||||
protected List<JoinQueryInfo> GetJoinInfos(Expression joinExpression, ref string shortName, params Type[] entityTypeArray)
|
protected List<JoinQueryInfo> GetJoinInfos(Expression joinExpression,ref List<SugarParameter> parameters, ref string shortName, params Type[] entityTypeArray)
|
||||||
{
|
{
|
||||||
List<JoinQueryInfo> result = new List<JoinQueryInfo>();
|
List<JoinQueryInfo> result = new List<JoinQueryInfo>();
|
||||||
var lambdaParameters = ((LambdaExpression)joinExpression).Parameters.ToList();
|
var lambdaParameters = ((LambdaExpression)joinExpression).Parameters.ToList();
|
||||||
@@ -204,6 +208,7 @@ namespace SqlSugar
|
|||||||
expressionContext.Resolve(joinExpression, ResolveExpressType.Join);
|
expressionContext.Resolve(joinExpression, ResolveExpressType.Join);
|
||||||
int i = 0;
|
int i = 0;
|
||||||
var joinArray = expressionContext.Result.GetResultArray();
|
var joinArray = expressionContext.Result.GetResultArray();
|
||||||
|
parameters = expressionContext.Parameters;
|
||||||
foreach (var entityType in entityTypeArray)
|
foreach (var entityType in entityTypeArray)
|
||||||
{
|
{
|
||||||
var isFirst = i == 0; ++i;
|
var isFirst = i == 0; ++i;
|
||||||
|
Reference in New Issue
Block a user