mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-04-24 18:04:52 +08:00
Merge branch 'dev' of https://github.com/sunkaixuan/SqlSugar
This commit is contained in:
commit
667a92c169
21
README.md
21
README.md
@ -409,5 +409,26 @@ db.CodeFirst.BackupTable().InitTables(typeof(CodeTable),typeof(CodeTable2)); //c
|
||||
db.CodeFirst.InitTables(typeof(CodeTable),typeof(CodeTable2));
|
||||
```
|
||||
|
||||
## 9. AOP LOG
|
||||
```
|
||||
db.Aop.OnLogExecuted = (sql, pars) => //SQL执行完事件
|
||||
{
|
||||
|
||||
};
|
||||
db.Aop.OnLogExecuting = (sql, pars) => //SQL执行前事件
|
||||
{
|
||||
|
||||
};
|
||||
db.Aop.OnError = (exp) =>//执行SQL 错误事件
|
||||
{
|
||||
|
||||
};
|
||||
db.Aop.OnExecutingChangeSql = (sql, pars) => //SQL执行前 可以修改SQL
|
||||
{
|
||||
return new KeyValuePair<string, SugarParameter[]>(sql,pars);
|
||||
};
|
||||
|
||||
```
|
||||
|
||||
More
|
||||
http://www.codeisbug.com/Doc/8
|
||||
|
@ -28,6 +28,13 @@ namespace OrmTest.Demo
|
||||
Simple();
|
||||
Async();
|
||||
Subqueryable();
|
||||
SqlQueryable();
|
||||
}
|
||||
|
||||
private static void SqlQueryable()
|
||||
{
|
||||
var db = GetInstance();
|
||||
var list = db.SqlQueryable<Student>("select * from student").ToPageList(1, 2);
|
||||
}
|
||||
|
||||
private static void Subqueryable()
|
||||
|
@ -116,6 +116,14 @@ namespace OrmTest.UnitTest
|
||||
|
||||
var t12 = db.Queryable<Student>().Where(it=>it.Id!=null).ToSql();
|
||||
base.Check("SELECT [ID],[SchoolId],[Name],[CreateTime] FROM [STudent] WHERE ( [ID] IS NOT NULL )", null, t12.Key, t12.Value, "single t12 error");
|
||||
|
||||
var id = 1;
|
||||
var t13 = db.Queryable<Student>().Where(it => SqlFunc.Subqueryable<School>().Where(s => s.Id == it.Id&&s.Id==id).Max(s => s.Id) == 1).ToSql();
|
||||
base.Check("SELECT [ID],[SchoolId],[Name],[CreateTime] FROM [STudent] it WHERE ((SELECT MAX([Id]) FROM [School] WHERE (( [Id] = [it].[ID] ) AND ( [Id] = @Id0 ))) = @Const1 )",
|
||||
new List<SugarParameter>() {
|
||||
new SugarParameter("@Id0",1),
|
||||
new SugarParameter("@Const1",1)
|
||||
}, t13.Key, t13.Value, "single t13 error ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -73,11 +73,19 @@ namespace SqlSugar
|
||||
}
|
||||
public virtual string GetPackTable(string sql, string shortName)
|
||||
{
|
||||
return UtilMethods.GetPackTable(sql,shortName);
|
||||
return UtilMethods.GetPackTable(sql, shortName);
|
||||
}
|
||||
public virtual string GetDefaultShortName()
|
||||
{
|
||||
return "t";
|
||||
}
|
||||
public virtual string GetUnionAllSql(List<string> sqlList)
|
||||
{
|
||||
return string.Join("UNION ALL \r\n", sqlList);
|
||||
}
|
||||
public virtual void RepairReplicationParameters(ref string appendSql, SugarParameter[] parameters, int addIndex)
|
||||
{
|
||||
UtilMethods.RepairReplicationParameters(ref appendSql,parameters,addIndex);
|
||||
UtilMethods.RepairReplicationParameters(ref appendSql, parameters, addIndex);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
@ -35,7 +35,7 @@ namespace SqlSugar
|
||||
{
|
||||
var exp = expression as MethodCallExpression;
|
||||
var argExp= exp.Arguments[0];
|
||||
var result= "WHERE "+SubTools.GetMethodValue(Context, argExp, ResolveExpressType.WhereMultiple);
|
||||
var result= "WHERE "+SubTools.GetMethodValue(Context, argExp, ResolveExpressType.WhereMultiple);;
|
||||
var selfParameterName = Context.GetTranslationColumnName((argExp as LambdaExpression).Parameters.First().Name)+UtilConstants.Dot;
|
||||
result = result.Replace(selfParameterName,string.Empty);
|
||||
return result;
|
||||
|
@ -11,7 +11,7 @@ namespace SqlSugar
|
||||
public static List<ISubOperation> SubItems(ExpressionContext Context)
|
||||
{
|
||||
|
||||
return new List<ISubOperation>()
|
||||
return new List<ISubOperation>()
|
||||
{
|
||||
new SubSelect() { Context=Context },
|
||||
new SubWhere(){ Context=Context },
|
||||
@ -37,6 +37,8 @@ namespace SqlSugar
|
||||
newContext.Resolve(item, type);
|
||||
context.Index = newContext.Index;
|
||||
context.ParameterIndex = newContext.ParameterIndex;
|
||||
if (newContext.Parameters.IsValuable())
|
||||
context.Parameters.AddRange(newContext.Parameters);
|
||||
return newContext.Result.GetResultString();
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,8 @@ namespace SqlSugar
|
||||
string GetTranslationColumnName(string propertyName);
|
||||
string GetNoTranslationColumnName(string name);
|
||||
string GetPackTable(string sql,string shortName);
|
||||
string GetDefaultShortName();
|
||||
string GetUnionAllSql(List<string> sqlList);
|
||||
void RepairReplicationParameters(ref string appendSql, SugarParameter[] parameters, int addIndex);
|
||||
}
|
||||
}
|
||||
|
@ -310,6 +310,7 @@ namespace SqlSugar
|
||||
|
||||
public virtual ISugarQueryable<T> UnionAll<T>(params ISugarQueryable<T>[] queryables) where T : class, new()
|
||||
{
|
||||
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig);
|
||||
Check.Exception(queryables.IsNullOrEmpty(), "UnionAll.queryables is null ");
|
||||
int i = 1;
|
||||
List<KeyValuePair<string, List<SugarParameter>>> allItems = new List<KeyValuePair<string, List<SugarParameter>>>();
|
||||
@ -324,7 +325,7 @@ namespace SqlSugar
|
||||
allItems.Add(new KeyValuePair<string, List<SugarParameter>>(sql, new List<SugarParameter>()));
|
||||
i++;
|
||||
}
|
||||
var allSql = string.Join("UNION ALL \r\n", allItems.Select(it => it.Key));
|
||||
var allSql = sqlBuilder.GetUnionAllSql(allItems.Select(it => it.Key).ToList());
|
||||
var allParameters = allItems.SelectMany(it => it.Value).ToArray();
|
||||
var resulut = this.Queryable<ExpandoObject>().AS(UtilMethods.GetPackTable(allSql, "unionTable"));
|
||||
resulut.AddParameters(allParameters);
|
||||
@ -337,6 +338,14 @@ namespace SqlSugar
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region SqlQueryable
|
||||
public ISugarQueryable<T> SqlQueryable<T>(string sql) where T : class, new()
|
||||
{
|
||||
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig);
|
||||
return this.Queryable<T>().AS(sqlBuilder.GetPackTable(sql, sqlBuilder.GetDefaultShortName()));
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Insertable
|
||||
public virtual IInsertable<T> Insertable<T>(T[] insertObjs) where T : class, new()
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user