This commit is contained in:
sunkaixuan
2017-06-13 01:29:01 +08:00
parent 775cee85c7
commit 2e6f58c464
9 changed files with 35 additions and 24 deletions

View File

@@ -8,7 +8,7 @@ using System.Threading.Tasks;
namespace OrmTest.Demo
{
public class Query:DemoBase
public class Query : DemoBase
{
public static void Init()
@@ -38,11 +38,11 @@ namespace OrmTest.Demo
});
//2. has result
var result= db.Ado.UseStoredProcedure<dynamic>(() =>
{
string spName = "sp_help";
return db.Ado.SqlQueryDynamic(spName, new { objname = "student" });
});
var result = db.Ado.UseStoredProcedure<dynamic>(() =>
{
string spName = "sp_help";
return db.Ado.SqlQueryDynamic(spName, new { objname = "student" });
});
//2. has output
object outPutValue;
@@ -50,8 +50,8 @@ namespace OrmTest.Demo
{
string spName = "sp_school";
var p1 = new SugarParameter("@p1", "1");
var p2= new SugarParameter("@p2", null,true);//isOutput=true
var dbResult= db.Ado.SqlQueryDynamic(spName,new SugarParameter[] {p1,p2 });
var p2 = new SugarParameter("@p2", null, true);//isOutput=true
var dbResult = db.Ado.SqlQueryDynamic(spName, new SugarParameter[] { p1, p2 });
outPutValue = p2.Value;
return dbResult;
});
@@ -97,6 +97,11 @@ namespace OrmTest.Demo
.GroupBy(it => it.Id).Having(it => SqlFunc.AggregateAvg(it.Id) > 0)
.Select(it => new { idAvg = SqlFunc.AggregateAvg(it.Id), name = it.Name }).ToList();
var list2 = db.Queryable<Student>()
.GroupBy(it => new { it.Id, it.Name }).Having(it => SqlFunc.AggregateAvg(it.Id) > 0)
.Select(it => new { idAvg = SqlFunc.AggregateAvg(it.Id), name = it.Name }).ToList();
//SQL:
//SELECT AVG([Id]) AS[idAvg], [Name] AS[name] FROM[Student] GROUP BY[Name],[Id] HAVING(AVG([Id]) > 0 )
@@ -120,7 +125,7 @@ namespace OrmTest.Demo
var db = GetInstance();
var getAll = db.Queryable<Student>().ToList();
var getId = db.Queryable<Student>().Select(it => it.Id).ToList();
var getNew= db.Queryable<Student>().Where(it=>it.Id==1).Select(it =>new { id = SqlFunc.IIF(it.Id == 0, 1, it.Id),it.Name,it.SchoolId }).ToList();
var getNew = db.Queryable<Student>().Where(it => it.Id == 1).Select(it => new { id = SqlFunc.IIF(it.Id == 0, 1, it.Id), it.Name, it.SchoolId }).ToList();
var getAllNoLock = db.Queryable<Student>().With(SqlWith.NoLock).ToList();
var getByPrimaryKey = db.Queryable<Student>().InSingle(2);
var getSingleOrDefault = db.Queryable<Student>().Single();
@@ -131,10 +136,10 @@ namespace OrmTest.Demo
var isAny = db.Queryable<Student>().Where(it => it.Id == -1).Any();
var isAny2 = db.Queryable<Student>().Any(it => it.Id == -1);
var getListByRename = db.Queryable<School>().AS("Student").ToList();
var in1 = db.Queryable<Student>().In(it=>it.Id,new int[] { 1, 2, 3 }).ToList();
var in1 = db.Queryable<Student>().In(it => it.Id, new int[] { 1, 2, 3 }).ToList();
var in2 = db.Queryable<Student>().In(new int[] { 1, 2, 3 }).ToList();
int[] array = new int[] { 1, 2 };
var in3 = db.Queryable<Student>().Where(it=>SqlFunc.ContainsArray(array, it.Id)).ToList();
var in3 = db.Queryable<Student>().Where(it => SqlFunc.ContainsArray(array, it.Id)).ToList();
var group = db.Queryable<Student>().GroupBy(it => it.Id)
.Having(it => SqlFunc.AggregateCount(it.Id) > 10)
.Select(it => new { id = SqlFunc.AggregateCount(it.Id) }).ToList();
@@ -150,7 +155,7 @@ namespace OrmTest.Demo
var pageSize = 2;
var totalCount = 0;
//page
var page = db.Queryable<Student>().OrderBy(it=>it.Id).ToPageList(pageIndex, pageSize, ref totalCount);
var page = db.Queryable<Student>().OrderBy(it => it.Id).ToPageList(pageIndex, pageSize, ref totalCount);
//page join
var pageJoin = db.Queryable<Student, School>((st, sc) => new object[] {
@@ -283,7 +288,7 @@ namespace OrmTest.Demo
private static void Enum()
{
var db = GetInstance();
var list = db.Queryable<StudentEnum>().AS("Student").Where(it=>it.SchoolId== SchoolEnum.HarvardUniversity).ToList();
var list = db.Queryable<StudentEnum>().AS("Student").Where(it => it.SchoolId == SchoolEnum.HarvardUniversity).ToList();
}
}
}

View File

@@ -67,7 +67,7 @@ namespace SqlSugar
}
public IInsertable<T> IgnoreColumns(Expression<Func<T, object>> columns)
{
var ignoreColumns = InsertBuilder.GetExpressionValue(columns, ResolveExpressType.Array).GetResultArray();
var ignoreColumns = InsertBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray();
this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => !ignoreColumns.Contains(it.PropertyName)).ToList();
return this;
}
@@ -79,7 +79,7 @@ namespace SqlSugar
public IInsertable<T> InsertColumns(Expression<Func<T, object>> columns)
{
var ignoreColumns = InsertBuilder.GetExpressionValue(columns, ResolveExpressType.Array).GetResultArray();
var ignoreColumns = InsertBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray();
this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => ignoreColumns.Contains(it.PropertyName)).ToList();
return this;
}

View File

@@ -489,7 +489,12 @@ namespace SqlSugar
{
var isSingle = QueryBuilder.IsSingle();
var lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.FieldSingle : ResolveExpressType.FieldMultiple);
GroupBy(lamResult.GetResultString());
string result = lamResult.GetResultString();
if (result.IsNullOrEmpty()) {
lamResult = QueryBuilder.GetExpressionValue(expression, isSingle ? ResolveExpressType.ArraySingle : ResolveExpressType.ArrayMultiple);
result =string.Join(",",lamResult.GetResultArray().Select(it=>this.SqlBuilder.GetTranslationColumnName(typeof(T).Name,it)));
}
GroupBy(result);
return this;
}
protected ISugarQueryable<T> _Having(Expression expression)

View File

@@ -48,7 +48,7 @@ namespace SqlSugar
public IUpdateable<T> IgnoreColumns(Expression<Func<T, object>> columns)
{
var ignoreColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.Array).GetResultArray();
var ignoreColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray();
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => !ignoreColumns.Contains(it.PropertyName)).ToList();
return this;
}
@@ -77,7 +77,7 @@ namespace SqlSugar
public IUpdateable<T> UpdateColumns(Expression<Func<T, object>> columns)
{
var updateColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.Array).GetResultArray();
var updateColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray();
List<string> primaryKeys = GetPrimaryKeys();
foreach (var item in this.UpdateBuilder.DbColumnInfoList)
{

View File

@@ -100,7 +100,7 @@ namespace SqlSugar
}
switch (this._ResolveExpressType)
{
case ResolveExpressType.Array:
case ResolveExpressType.ArraySingle:
case ResolveExpressType.SelectSingle:
case ResolveExpressType.SelectMultiple:
case ResolveExpressType.Update:

View File

@@ -14,8 +14,9 @@ namespace SqlSugar
FieldSingle=5,
FieldMultiple=7,
Join=8,
Array=9,
Update=10
ArraySingle=9,
ArrayMultiple = 10,
Update =11
}
}

View File

@@ -84,7 +84,7 @@ namespace SqlSugar
fieldName = getMultipleName(parameter, expression, isLeft);
base.Context.Result.Append(fieldName);
break;
case ResolveExpressType.Array:
case ResolveExpressType.ArraySingle:
fieldName = getArrayName(parameter, expression, isLeft);
base.Context.Result.Append(fieldName);
break;

View File

@@ -22,7 +22,7 @@ namespace SqlSugar
case ResolveExpressType.FieldMultiple:
Check.ThrowNotSupportedException("NewArrayExpression");
break;
case ResolveExpressType.Array:
case ResolveExpressType.ArraySingle:
foreach (var item in expression.Expressions)
{
base.Expression = item;

View File

@@ -29,7 +29,7 @@ namespace SqlSugar
break;
case ResolveExpressType.FieldMultiple:
break;
case ResolveExpressType.Array:
case ResolveExpressType.ArraySingle:
foreach (var item in expression.Arguments)
{
base.Expression = item;