mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-10-15 18:55:07 +08:00
-
This commit is contained in:
Binary file not shown.
49
OrmTest/ExpressionTest/ExpTestBase.cs
Normal file
49
OrmTest/ExpressionTest/ExpTestBase.cs
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using SqlSugar;
|
||||||
|
using System.Linq;
|
||||||
|
namespace OrmTest.ExpressionTest
|
||||||
|
{
|
||||||
|
public class ExpTestBase
|
||||||
|
{
|
||||||
|
public int Count { get; set; }
|
||||||
|
private DateTime BeginTime { get; set; }
|
||||||
|
private DateTime EndTime { get; set; }
|
||||||
|
|
||||||
|
public void Begin()
|
||||||
|
{
|
||||||
|
this.BeginTime = DateTime.Now;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void End(string title)
|
||||||
|
{
|
||||||
|
this.EndTime = DateTime.Now;
|
||||||
|
Console.WriteLine(title + " \r\nCount: " + this.Count + "\r\nTime: " + (this.EndTime - this.BeginTime).TotalSeconds + " Seconds \r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void CheckSelect(string selectorValue, List<SugarParameter> pars, string validValue, List<SugarParameter> validPars, string errorMessage)
|
||||||
|
{
|
||||||
|
if (selectorValue.Trim() != validValue.Trim())
|
||||||
|
{
|
||||||
|
throw new Exception(errorMessage);
|
||||||
|
}
|
||||||
|
if (pars != null && pars.Count > 0)
|
||||||
|
{
|
||||||
|
if (pars.Count != validPars.Count)
|
||||||
|
{
|
||||||
|
throw new Exception(errorMessage);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach (var item in pars)
|
||||||
|
{
|
||||||
|
if (!validPars.Any(it => it.ParameterName.Equals(item.ParameterName) && it.Value.Equals(item.Value)))
|
||||||
|
{
|
||||||
|
throw new Exception(errorMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -9,61 +9,91 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace OrmTest.ExpressionTest
|
namespace OrmTest.ExpressionTest
|
||||||
{
|
{
|
||||||
public class Select
|
public class Select : ExpTestBase
|
||||||
{
|
{
|
||||||
internal static void Init()
|
private Select() { }
|
||||||
|
public Select(int eachCount)
|
||||||
{
|
{
|
||||||
DateTime b = DateTime.Now;
|
this.Count = eachCount;
|
||||||
int count = 1;
|
}
|
||||||
for (int i = 0; i < count; i++)
|
internal void Init()
|
||||||
|
{
|
||||||
|
base.Begin();
|
||||||
|
for (int i = 0; i < base.Count; i++)
|
||||||
{
|
{
|
||||||
single();
|
single();
|
||||||
Multiple();
|
Multiple();
|
||||||
singleDynamic();
|
singleDynamic();
|
||||||
MultipleDynamic();
|
MultipleDynamic();
|
||||||
}
|
}
|
||||||
DateTime e = DateTime.Now;
|
base.End("Select Test");
|
||||||
Console.WriteLine("Count: " + count + "\r\nTime: " + (e - b).TotalSeconds + " Seconds ");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void Multiple()
|
private void Multiple()
|
||||||
{
|
{
|
||||||
Expression<Func<Student, School, object>> exp = (it, school) => new Student() { Name = "a", Id = it.Id, SchoolId = school.Id,TestId=it.Id+1 };
|
Expression<Func<Student, School, object>> exp = (it, school) => new Student() { Name = "a", Id = it.Id, SchoolId = school.Id, TestId = it.Id + 1 };
|
||||||
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.SelectMultiple);
|
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.SelectMultiple);
|
||||||
expContext.Resolve();
|
expContext.Resolve();
|
||||||
var selectorValue = expContext.Result.GetString();
|
var selectorValue = expContext.Result.GetString();
|
||||||
var pars = expContext.Parameters;
|
var pars = expContext.Parameters;
|
||||||
if (selectorValue.Trim() != " @constant1 AS Name , it.Id AS Id , school.Id AS SchoolId ".Trim())
|
base.CheckSelect(
|
||||||
{
|
selectorValue,
|
||||||
throw new Exception("Multiple Error");
|
pars,
|
||||||
}
|
@" @constant1 AS Name , it.Id AS Id , school.Id AS SchoolId , ( it.Id + 1 ) AS TestId ",
|
||||||
|
new List<SugarParameter>(){
|
||||||
|
new SugarParameter("@constant1","a")},
|
||||||
|
"Select.Multiple Error");
|
||||||
}
|
}
|
||||||
private static void MultipleDynamic()
|
|
||||||
|
private void MultipleDynamic()
|
||||||
{
|
{
|
||||||
Expression<Func<Student, School, object>> exp = (it, school) => new { Name = "a", Id = it.Id / 2, SchoolId = school.Id };
|
Expression<Func<Student, School, object>> exp = (it, school) => new { Name = "a", Id = it.Id / 2, SchoolId = school.Id };
|
||||||
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.SelectMultiple);
|
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.SelectMultiple);
|
||||||
expContext.Resolve();
|
expContext.Resolve();
|
||||||
var selectorValue = expContext.Result.GetString();
|
var selectorValue = expContext.Result.GetString();
|
||||||
var pars = expContext.Parameters;
|
var pars = expContext.Parameters;
|
||||||
|
base.CheckSelect(
|
||||||
|
selectorValue,
|
||||||
|
pars,
|
||||||
|
@" @constant1 AS Name , ( it.Id / 2 ) AS Id , school.Id AS SchoolId ",
|
||||||
|
new List<SugarParameter>(){
|
||||||
|
new SugarParameter("@constant1","a")},
|
||||||
|
"Select.MultipleDynamic Error");
|
||||||
}
|
}
|
||||||
private static void single()
|
private void single()
|
||||||
{
|
{
|
||||||
int p = 1;
|
int p = 1;
|
||||||
Expression<Func<Student, object>> exp = it => new Student() { Name = "a", Id = it.Id, SchoolId = p };
|
Expression<Func<Student, object>> exp = it => new Student() { Name = "a", Id = it.Id, SchoolId = p,TestId=it.Id+1 };
|
||||||
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.SelectSingle);
|
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.SelectSingle);
|
||||||
expContext.Resolve();
|
expContext.Resolve();
|
||||||
var selectorValue = expContext.Result.GetString();
|
var selectorValue = expContext.Result.GetString();
|
||||||
var pars = expContext.Parameters;
|
var pars = expContext.Parameters;
|
||||||
|
base.CheckSelect(
|
||||||
|
selectorValue,
|
||||||
|
pars,
|
||||||
|
@" @constant1 AS Name , Id AS Id , @constant3 AS SchoolId , ( Id + 1 ) AS TestId ",
|
||||||
|
new List<SugarParameter>(){
|
||||||
|
new SugarParameter("@constant1","a"),
|
||||||
|
new SugarParameter("@constant3",1)},
|
||||||
|
"Select.single Error");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void singleDynamic()
|
private void singleDynamic()
|
||||||
{
|
{
|
||||||
string a = "a";
|
string a = "a";
|
||||||
Expression<Func<Student, object>> exp = it => new { x = it.Id, shoolid = 1, name = a };
|
Expression<Func<Student, object>> exp = it => new { x = it.Id, shoolid = 1, name = a,p=it.Id*1 };
|
||||||
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.SelectSingle);
|
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.SelectSingle);
|
||||||
expContext.Resolve();
|
expContext.Resolve();
|
||||||
var selectorValue = expContext.Result.GetString();
|
var selectorValue = expContext.Result.GetString();
|
||||||
var pars = expContext.Parameters;
|
var pars = expContext.Parameters;
|
||||||
|
base.CheckSelect(
|
||||||
|
selectorValue,
|
||||||
|
pars,
|
||||||
|
@" Id AS x , @constant2 AS shoolid , @constant3 AS name , ( Id * 1 ) AS p ",
|
||||||
|
new List<SugarParameter>(){
|
||||||
|
new SugarParameter("@constant2",1),
|
||||||
|
new SugarParameter("@constant3","a")},
|
||||||
|
"Select.single Error");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -43,6 +43,7 @@
|
|||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="ExpressionTest\ExpTestBase.cs" />
|
||||||
<Compile Include="ExpressionTest\Field.cs" />
|
<Compile Include="ExpressionTest\Field.cs" />
|
||||||
<Compile Include="ExpressionTest\Select.cs" />
|
<Compile Include="ExpressionTest\Select.cs" />
|
||||||
<Compile Include="ExpressionTest\Where.cs" />
|
<Compile Include="ExpressionTest\Where.cs" />
|
||||||
|
@@ -14,61 +14,56 @@ namespace OrmTest
|
|||||||
|
|
||||||
class Program
|
class Program
|
||||||
{
|
{
|
||||||
public static string GetName() {
|
|
||||||
return "a";
|
|
||||||
}
|
|
||||||
public string x = "2";
|
|
||||||
public static string id { get; set;}
|
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
|
int eachCount = 1;
|
||||||
|
new OrmTest.ExpressionTest.Select(eachCount).Init();
|
||||||
OrmTest.ExpressionTest.Select.Init();
|
|
||||||
OrmTest.ExpressionTest.Field.Init();
|
OrmTest.ExpressionTest.Field.Init();
|
||||||
|
|
||||||
|
|
||||||
Program.id = "xx";
|
// Program.id = "xx";
|
||||||
string x = "1";
|
// string x = "1";
|
||||||
Expression<Func<Student, object>> exp = it => new Program() { x=it.Name };
|
// Expression<Func<Student, object>> exp = it => new Program() { x=it.Name };
|
||||||
// Expression<Func<Student, object>> exp = it => it.Name;
|
//// Expression<Func<Student, object>> exp = it => it.Name;
|
||||||
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereSingle);
|
// ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereSingle);
|
||||||
// var x = expContext.GetFiledName();
|
// var x = expContext.GetFiledName();
|
||||||
// var xx = expContext.ToResultString();
|
// var xx = expContext.ToResultString();
|
||||||
|
|
||||||
|
|
||||||
var b = DateTime.Now;
|
// var b = DateTime.Now;
|
||||||
var config = new AttrbuitesCofnig()
|
// var config = new AttrbuitesCofnig()
|
||||||
{
|
// {
|
||||||
DbType = DbType.SqlServer,
|
// DbType = DbType.SqlServer,
|
||||||
ConnectionString = "server=.;uid=sa;pwd=sasa;database=SqlSugar4XTest",
|
// ConnectionString = "server=.;uid=sa;pwd=sasa;database=SqlSugar4XTest",
|
||||||
EntityNamespace = "OrmTest.Models",
|
// EntityNamespace = "OrmTest.Models",
|
||||||
IsAutoCloseConnection = false
|
// IsAutoCloseConnection = false
|
||||||
};
|
// };
|
||||||
SqlSugarClient db = new SqlSugarClient(config);
|
// SqlSugarClient db = new SqlSugarClient(config);
|
||||||
for (int i = 0; i < 1; i++)
|
// for (int i = 0; i < 1; i++)
|
||||||
{
|
// {
|
||||||
db.Database.IsEnableLogEvent = true;
|
// db.Database.IsEnableLogEvent = true;
|
||||||
db.Database.LogEventStarting = (sql, par) =>
|
// db.Database.LogEventStarting = (sql, par) =>
|
||||||
{
|
// {
|
||||||
Console.WriteLine(sql + " " + par);
|
// Console.WriteLine(sql + " " + par);
|
||||||
};
|
// };
|
||||||
|
|
||||||
|
|
||||||
var tb = db.Database.DbMaintenance.GetTableInfoList();
|
// var tb = db.Database.DbMaintenance.GetTableInfoList();
|
||||||
var tc = db.Database.DbMaintenance.GetColumnInfosByTableName("student");
|
// var tc = db.Database.DbMaintenance.GetColumnInfosByTableName("student");
|
||||||
|
|
||||||
|
|
||||||
//var list = db.Queryable<Student>()
|
// //var list = db.Queryable<Student>()
|
||||||
// .JoinTable<School>((st,sc)=>st.SchoolId==sc.Id)
|
// // .JoinTable<School>((st,sc)=>st.SchoolId==sc.Id)
|
||||||
// .Where("id=2").Where(it => it.Name == "id").Where(it => it.Id > 0).ToList();
|
// // .Where("id=2").Where(it => it.Name == "id").Where(it => it.Id > 0).ToList();
|
||||||
|
|
||||||
//var list2 = db.Queryable<Student>().Where(it => it.Name == "id").Where(it => it.Id > 0).ToList();
|
// //var list2 = db.Queryable<Student>().Where(it => it.Name == "id").Where(it => it.Id > 0).ToList();
|
||||||
//var xx = db.SqlQuery<Student>("select * from Student");
|
// //var xx = db.SqlQuery<Student>("select * from Student");
|
||||||
//var cl = db.Database.DbMaintenance.GetColumnInfosByTableName("student");
|
// //var cl = db.Database.DbMaintenance.GetColumnInfosByTableName("student");
|
||||||
|
|
||||||
}
|
// }
|
||||||
var e = DateTime.Now;
|
// var e = DateTime.Now;
|
||||||
var t = (e - b).TotalMilliseconds;
|
// var t = (e - b).TotalMilliseconds;
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -17,7 +17,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
Check.Exception(value!=null&&IsLockCurrentParameter, "CurrentParameter is locked.");
|
Check.Exception(value != null && IsLockCurrentParameter, "CurrentParameter is locked.");
|
||||||
this._CurrentParameter = value;
|
this._CurrentParameter = value;
|
||||||
this.IsLockCurrentParameter = false;
|
this.IsLockCurrentParameter = false;
|
||||||
}
|
}
|
||||||
@@ -70,6 +70,12 @@ namespace SqlSugar
|
|||||||
return this.Result.ToString();
|
return this.Result.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void TrimEnd()
|
||||||
|
{
|
||||||
|
if (this._Result == null) return;
|
||||||
|
this.Result=this.Result.Remove(this.Result.Length-1,1);
|
||||||
|
}
|
||||||
|
|
||||||
public void Append(object parameter)
|
public void Append(object parameter)
|
||||||
{
|
{
|
||||||
if (this.CurrentParameter.IsValuable() && this.CurrentParameter.AppendType.IsIn(ExpressionResultAppendType.AppendTempDate))
|
if (this.CurrentParameter.IsValuable() && this.CurrentParameter.AppendType.IsIn(ExpressionResultAppendType.AppendTempDate))
|
||||||
|
@@ -80,6 +80,7 @@ namespace SqlSugar
|
|||||||
base.Start();
|
base.Start();
|
||||||
parameter.CommonTempData = null;
|
parameter.CommonTempData = null;
|
||||||
parameter.IsAppendResult();
|
parameter.IsAppendResult();
|
||||||
|
this.Context.Result.TrimEnd();
|
||||||
base.Context.Result.Append(base.Context.GetAsString(memberName, parameter.CommonTempData.ObjToString()));
|
base.Context.Result.Append(base.Context.GetAsString(memberName, parameter.CommonTempData.ObjToString()));
|
||||||
base.Context.Result.CurrentParameter = null;
|
base.Context.Result.CurrentParameter = null;
|
||||||
}
|
}
|
||||||
|
@@ -76,6 +76,7 @@ namespace SqlSugar
|
|||||||
base.Start();
|
base.Start();
|
||||||
parameter.CommonTempData = null;
|
parameter.CommonTempData = null;
|
||||||
parameter.IsAppendResult();
|
parameter.IsAppendResult();
|
||||||
|
this.Context.Result.TrimEnd();
|
||||||
base.Context.Result.Append(base.Context.GetAsString(memberName, parameter.CommonTempData.ObjToString()));
|
base.Context.Result.Append(base.Context.GetAsString(memberName, parameter.CommonTempData.ObjToString()));
|
||||||
base.Context.Result.CurrentParameter = null;
|
base.Context.Result.CurrentParameter = null;
|
||||||
}
|
}
|
||||||
|
@@ -21,10 +21,10 @@ namespace SqlSugar
|
|||||||
var rightValue = parameter.CommonTempData;
|
var rightValue = parameter.CommonTempData;
|
||||||
base.Expression = expression.Left;
|
base.Expression = expression.Left;
|
||||||
base.Start();
|
base.Start();
|
||||||
var leftValue = parameter.CommonTempData;
|
var leftValue = parameter.Context.Result.CurrentParameter.CommonTempData;
|
||||||
var operatorValue = ExpressionTool.GetOperator(expression.NodeType);
|
var operatorValue = ExpressionTool.GetOperator(expression.NodeType);
|
||||||
this.Context.Result.CurrentParameter = null;
|
this.Context.Result.CurrentParameter = null;
|
||||||
this.Context.Result.AppendFormat(ExpressionConst.BinaryFormatString, leftValue, operatorValue, rightValue);
|
this.Context.Result.AppendFormat(ExpressionConst.BinaryFormatString, leftValue, operatorValue, rightValue.ObjToString());
|
||||||
break;
|
break;
|
||||||
case ResolveExpressType.WhereSingle:
|
case ResolveExpressType.WhereSingle:
|
||||||
case ResolveExpressType.WhereMultiple:
|
case ResolveExpressType.WhereMultiple:
|
||||||
|
Reference in New Issue
Block a user