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
|
||||
{
|
||||
public class Select
|
||||
public class Select : ExpTestBase
|
||||
{
|
||||
internal static void Init()
|
||||
private Select() { }
|
||||
public Select(int eachCount)
|
||||
{
|
||||
DateTime b = DateTime.Now;
|
||||
int count = 1;
|
||||
for (int i = 0; i < count; i++)
|
||||
this.Count = eachCount;
|
||||
}
|
||||
internal void Init()
|
||||
{
|
||||
base.Begin();
|
||||
for (int i = 0; i < base.Count; i++)
|
||||
{
|
||||
single();
|
||||
Multiple();
|
||||
singleDynamic();
|
||||
MultipleDynamic();
|
||||
}
|
||||
DateTime e = DateTime.Now;
|
||||
Console.WriteLine("Count: " + count + "\r\nTime: " + (e - b).TotalSeconds + " Seconds ");
|
||||
base.End("Select Test");
|
||||
}
|
||||
|
||||
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);
|
||||
expContext.Resolve();
|
||||
var selectorValue = expContext.Result.GetString();
|
||||
var pars = expContext.Parameters;
|
||||
if (selectorValue.Trim() != " @constant1 AS Name , it.Id AS Id , school.Id AS SchoolId ".Trim())
|
||||
{
|
||||
throw new Exception("Multiple Error");
|
||||
}
|
||||
base.CheckSelect(
|
||||
selectorValue,
|
||||
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 };
|
||||
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.SelectMultiple);
|
||||
expContext.Resolve();
|
||||
var selectorValue = expContext.Result.GetString();
|
||||
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;
|
||||
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);
|
||||
expContext.Resolve();
|
||||
var selectorValue = expContext.Result.GetString();
|
||||
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";
|
||||
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);
|
||||
expContext.Resolve();
|
||||
var selectorValue = expContext.Result.GetString();
|
||||
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" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ExpressionTest\ExpTestBase.cs" />
|
||||
<Compile Include="ExpressionTest\Field.cs" />
|
||||
<Compile Include="ExpressionTest\Select.cs" />
|
||||
<Compile Include="ExpressionTest\Where.cs" />
|
||||
|
@@ -14,61 +14,56 @@ namespace OrmTest
|
||||
|
||||
class Program
|
||||
{
|
||||
public static string GetName() {
|
||||
return "a";
|
||||
}
|
||||
public string x = "2";
|
||||
public static string id { get; set;}
|
||||
static void Main(string[] args)
|
||||
{
|
||||
|
||||
|
||||
OrmTest.ExpressionTest.Select.Init();
|
||||
int eachCount = 1;
|
||||
new OrmTest.ExpressionTest.Select(eachCount).Init();
|
||||
OrmTest.ExpressionTest.Field.Init();
|
||||
|
||||
|
||||
Program.id = "xx";
|
||||
string x = "1";
|
||||
Expression<Func<Student, object>> exp = it => new Program() { x=it.Name };
|
||||
// Expression<Func<Student, object>> exp = it => it.Name;
|
||||
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereSingle);
|
||||
// var x = expContext.GetFiledName();
|
||||
// var xx = expContext.ToResultString();
|
||||
// Program.id = "xx";
|
||||
// string x = "1";
|
||||
// Expression<Func<Student, object>> exp = it => new Program() { x=it.Name };
|
||||
//// Expression<Func<Student, object>> exp = it => it.Name;
|
||||
// ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereSingle);
|
||||
// var x = expContext.GetFiledName();
|
||||
// var xx = expContext.ToResultString();
|
||||
|
||||
|
||||
var b = DateTime.Now;
|
||||
var config = new AttrbuitesCofnig()
|
||||
{
|
||||
DbType = DbType.SqlServer,
|
||||
ConnectionString = "server=.;uid=sa;pwd=sasa;database=SqlSugar4XTest",
|
||||
EntityNamespace = "OrmTest.Models",
|
||||
IsAutoCloseConnection = false
|
||||
};
|
||||
SqlSugarClient db = new SqlSugarClient(config);
|
||||
for (int i = 0; i < 1; i++)
|
||||
{
|
||||
db.Database.IsEnableLogEvent = true;
|
||||
db.Database.LogEventStarting = (sql, par) =>
|
||||
{
|
||||
Console.WriteLine(sql + " " + par);
|
||||
};
|
||||
// var b = DateTime.Now;
|
||||
// var config = new AttrbuitesCofnig()
|
||||
// {
|
||||
// DbType = DbType.SqlServer,
|
||||
// ConnectionString = "server=.;uid=sa;pwd=sasa;database=SqlSugar4XTest",
|
||||
// EntityNamespace = "OrmTest.Models",
|
||||
// IsAutoCloseConnection = false
|
||||
// };
|
||||
// SqlSugarClient db = new SqlSugarClient(config);
|
||||
// for (int i = 0; i < 1; i++)
|
||||
// {
|
||||
// db.Database.IsEnableLogEvent = true;
|
||||
// db.Database.LogEventStarting = (sql, par) =>
|
||||
// {
|
||||
// Console.WriteLine(sql + " " + par);
|
||||
// };
|
||||
|
||||
|
||||
var tb = db.Database.DbMaintenance.GetTableInfoList();
|
||||
var tc = db.Database.DbMaintenance.GetColumnInfosByTableName("student");
|
||||
// var tb = db.Database.DbMaintenance.GetTableInfoList();
|
||||
// var tc = db.Database.DbMaintenance.GetColumnInfosByTableName("student");
|
||||
|
||||
|
||||
//var list = db.Queryable<Student>()
|
||||
// .JoinTable<School>((st,sc)=>st.SchoolId==sc.Id)
|
||||
// .Where("id=2").Where(it => it.Name == "id").Where(it => it.Id > 0).ToList();
|
||||
// //var list = db.Queryable<Student>()
|
||||
// // .JoinTable<School>((st,sc)=>st.SchoolId==sc.Id)
|
||||
// // .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 xx = db.SqlQuery<Student>("select * from Student");
|
||||
//var cl = db.Database.DbMaintenance.GetColumnInfosByTableName("student");
|
||||
// //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 cl = db.Database.DbMaintenance.GetColumnInfosByTableName("student");
|
||||
|
||||
}
|
||||
var e = DateTime.Now;
|
||||
var t = (e - b).TotalMilliseconds;
|
||||
// }
|
||||
// var e = DateTime.Now;
|
||||
// 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
|
||||
{
|
||||
Check.Exception(value!=null&&IsLockCurrentParameter, "CurrentParameter is locked.");
|
||||
Check.Exception(value != null && IsLockCurrentParameter, "CurrentParameter is locked.");
|
||||
this._CurrentParameter = value;
|
||||
this.IsLockCurrentParameter = false;
|
||||
}
|
||||
@@ -70,6 +70,12 @@ namespace SqlSugar
|
||||
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)
|
||||
{
|
||||
if (this.CurrentParameter.IsValuable() && this.CurrentParameter.AppendType.IsIn(ExpressionResultAppendType.AppendTempDate))
|
||||
|
@@ -80,6 +80,7 @@ namespace SqlSugar
|
||||
base.Start();
|
||||
parameter.CommonTempData = null;
|
||||
parameter.IsAppendResult();
|
||||
this.Context.Result.TrimEnd();
|
||||
base.Context.Result.Append(base.Context.GetAsString(memberName, parameter.CommonTempData.ObjToString()));
|
||||
base.Context.Result.CurrentParameter = null;
|
||||
}
|
||||
|
@@ -76,6 +76,7 @@ namespace SqlSugar
|
||||
base.Start();
|
||||
parameter.CommonTempData = null;
|
||||
parameter.IsAppendResult();
|
||||
this.Context.Result.TrimEnd();
|
||||
base.Context.Result.Append(base.Context.GetAsString(memberName, parameter.CommonTempData.ObjToString()));
|
||||
base.Context.Result.CurrentParameter = null;
|
||||
}
|
||||
|
@@ -21,10 +21,10 @@ namespace SqlSugar
|
||||
var rightValue = parameter.CommonTempData;
|
||||
base.Expression = expression.Left;
|
||||
base.Start();
|
||||
var leftValue = parameter.CommonTempData;
|
||||
var leftValue = parameter.Context.Result.CurrentParameter.CommonTempData;
|
||||
var operatorValue = ExpressionTool.GetOperator(expression.NodeType);
|
||||
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;
|
||||
case ResolveExpressType.WhereSingle:
|
||||
case ResolveExpressType.WhereMultiple:
|
||||
|
Reference in New Issue
Block a user