Update Demo

This commit is contained in:
sunkaixuan
2017-08-14 01:25:43 +08:00
parent 90cc6d0cea
commit 208a8e7467
18 changed files with 654 additions and 98 deletions

View File

@@ -68,10 +68,5 @@ namespace OrmTest.UnitTest
throw new Exception("DataTest Error");
}
}
public SqlSugarClient GetInstance()
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true });
return db;
}
}
}

View File

@@ -0,0 +1,39 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OrmTest.UnitTest
{
public class DataTest2 : UnitTestBase
{
public interface IEntity<T> {
T ID { get; set; }
}
public abstract class Entity<T> : IEntity<T>
{
public virtual T ID { get; set; }
}
public class MyModel: Entity<int>
{
public override int ID { get; set; }
}
private DataTest2() { }
public DataTest2(int eachCount)
{
this.Count = eachCount;
}
public void Init()
{
var db = GetInstance();
var t1 = db.Queryable<MyModel>().AS("Student").ToList();
}
public SqlSugarClient GetInstance()
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true });
return db;
}
}
}

View File

@@ -51,12 +51,11 @@ namespace OrmTest.UnitTest
base.Check(@"DELETE FROM [STudent] WHERE ( [ID] = @Id0 ) ", new List<SugarParameter>() {
new SugarParameter("@Id0",1)
}, t5.Key, t5.Value, "Delte t5 error");
}
public SqlSugarClient GetInstance()
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true });
return db;
var t6 = db.Deleteable<Student>().Where("id=@id",new { id=1}).ToSql();
base.Check(@"DELETE FROM [STudent] WHERE id=@id", new List<SugarParameter>() {
new SugarParameter("@id",1)
}, t6.Key, t6.Value, "Delte t6 error");
}
}
}

View File

@@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OrmTest.Demo;
using OrmTest.Models;
namespace OrmTest.UnitTest
{
public class EnumTest : UnitTestBase
{
private EnumTest() { }
public EnumTest(int eachCount)
{
this.Count = eachCount;
}
public void Init()
{
var db = GetInstance();
var shoolValue = SchoolEnum.HarvardUniversity;
var enums = new SchoolEnum[] { shoolValue, SchoolEnum.UniversityOfOxford };
var list = db.Queryable<StudentEnum>().AS("student").Where(it => it.SchoolId == shoolValue).ToList();
var x = new StudentEnum()
{
Name = shoolValue.ToString(),
SchoolId = shoolValue
};
var x2 = db.Queryable<StudentEnum>().AS("student").Where(it => enums.Contains(it.SchoolId)).ToSql();
var id= db.Insertable(x).AS("student").ExecuteReturnIdentity();
var data = db.Queryable<StudentEnum>().AS("student").InSingle(id);
shoolValue = SchoolEnum.UniversityOfOxford;
var sql= db.Updateable<StudentEnum>().AS("student").UpdateColumns(it=>new StudentEnum() { Name="a" , SchoolId= shoolValue }).Where(it=>it.Id==id).ToSql();
var sql2 = db.Updateable<StudentEnum>().AS("student").UpdateColumns(it => new StudentEnum() { Name = "a", SchoolId = SchoolEnum.UniversityOfOxford }).Where(it => it.Id == id).ToSql();
}
}
}

View File

@@ -23,6 +23,7 @@ namespace OrmTest.UnitTest
{
FieldSingle();
FieldMultiple();
FieldMultiple2();
}
base.End("Filed Test");
}
@@ -43,6 +44,14 @@ namespace OrmTest.UnitTest
Check(selectorValue, null, expContext.GetTranslationColumnName("it.Name"), null, "FieldMultiple error");
}
private void FieldMultiple2()
{
Expression<Func<Student, object>> exp = it =>SqlFunc.AggregateAvg(it.Id);
ExpressionContext expContext = GetContext();
expContext.Resolve(exp, ResolveExpressType.FieldMultiple);
var selectorValue = expContext.Result.GetString();
Check(selectorValue, null, "AVG([it].[Id])", null, "FieldMultiple error");
}
public ExpressionContext GetContext()
{
return new SqlServerExpressionContext();//可以更换

View File

@@ -30,8 +30,12 @@ namespace OrmTest.UnitTest
ExtendDate();
//SqlFun methods
MappingColumn();
IIF();
IIF2();
IIF3();
IIF4();
IIF5();
#region StringIsNullOrEmpty
HasValue();
HasNumber();
@@ -46,6 +50,7 @@ namespace OrmTest.UnitTest
Trim();
Contains();
Contains2();
Contains3();
ContainsArray();
StartsWith();
EndsWith();
@@ -68,6 +73,7 @@ namespace OrmTest.UnitTest
Substring();
Replace();
Length();
Time();
}
base.End("Method Test");
}
@@ -107,8 +113,49 @@ namespace OrmTest.UnitTest
base.Check(value, pars, "(LEN(@MethodConst0) > @Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","aaaa"),new SugarParameter("@Const1",1)
}, "Length error");
Length2();
Length3();
}
private void Length2()
{
Expression<Func<Student, bool>> exp = it => it.Name.Length > 1;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(LEN([Name])> @Length1 )", new List<SugarParameter>() {
new SugarParameter("@Length1",1)
}, "Length2 error");
}
private void Length3()
{
Expression<Func<Student, bool>> exp = it => it.Name.Length > "a".Length;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(LEN([Name])> @Length1 )", new List<SugarParameter>() {
new SugarParameter("@Length1",1)
}, "Length3 error");
}
private void Time()
{
TimeSpan s = TimeSpan.Parse("11:22:22");
Expression<Func<Student, bool>> exp = it => SqlFunc.ToTime("11:12:59")==s;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS TIME) = @Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","11:12:59"),new SugarParameter("@Const1",s)
}, "Time error");
}
private void Replace()
{
var x2 = Guid.NewGuid();
@@ -272,8 +319,8 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, " ((@MethodConst1(@MethodConst0)) = @Const2 ) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",DateType.Year),new SugarParameter("@Const2",1)
base.Check(value, pars, " (DateName(Year,@MethodConst0) = @Const2 ) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@Const2",1)
}, "DateValue error");
}
@@ -319,9 +366,9 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "((DATEADD(@MethodConst2,@MethodConst1,@MethodConst0)) = @Const3 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",11),new SugarParameter("@Const3",x2),
new SugarParameter("@MethodConst2",DateType.Millisecond)
base.Check(value, pars, "((DATEADD(Millisecond,@MethodConst1,@MethodConst0)) = @Const3 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",11),new SugarParameter("@Const3",x2)
}, "DateAddByType error");
}
private void DateAddDay()
@@ -334,7 +381,39 @@ namespace OrmTest.UnitTest
var pars = expContext.Parameters;
base.Check(value, pars, "((DATEADD(day,@MethodConst1,@MethodConst0)) = @Const2 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",1),new SugarParameter("@Const2",x2)
}, "DateIsSameByType error");
}, "DateAddDay error");
DateAddDay2();
DateAddDay3();
}
private void DateAddDay2()
{
var x2 = DateTime.Now;
Expression<Func<DataTestInfo, bool>> exp = it =>it.Datetime2.Value.AddHours(10) == x2;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "((DATEADD(Hour,@MethodConst1,[Datetime2])) = @Const2 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst1",10)
,new SugarParameter("@Const2",x2)
}, "DateAddDay2 error");
}
private void DateAddDay3()
{
var x2 = DateTime.Now;
Expression<Func<Student, bool>> exp = it => x2.AddHours(1) == x2;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "((DATEADD(Hour,@MethodConst2,@MethodConst1)) = @Const3 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst2",1),
new SugarParameter("@MethodConst1",x2)
,new SugarParameter("@Const3",x2)
}, "DateAddDay3 error");
}
private void DateIsSameByType()
@@ -345,9 +424,8 @@ namespace OrmTest.UnitTest
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, " (DATEDIFF(@MethodConst2,@MethodConst0,@MethodConst1)=0) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",x2),
new SugarParameter("@MethodConst2",DateType.Millisecond)
base.Check(value, pars, " (DATEDIFF(Millisecond,@MethodConst0,@MethodConst1)=0) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",x2)
}, "DateIsSameByType error");
}
private void DateIsSameByDay()
@@ -428,6 +506,18 @@ namespace OrmTest.UnitTest
new SugarParameter("@MethodConst0","a")
}, "Contains2 error");
}
private void Contains3(string name = "a")
{
Expression<Func<Student, bool>> exp = it => !SqlFunc.Contains(it.Name, name)&&it.Id==1;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(NOT ([Name] like '%'+@MethodConst0+'%') AND( [Id] = @Id1 ))", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a"),
new SugarParameter("@Id1",1)
}, "Contains3 error");
}
private void ExtendContainsArray() {
var array = new string[] { "1", "2" }.ToList();
@@ -575,7 +665,17 @@ namespace OrmTest.UnitTest
}, "HasNumber error");
}
private void MappingColumn() {
Expression<Func<Student, bool>> exp = it => SqlFunc.MappingColumn(it.Id,"Name") == 1;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(Name = @Const1 )", new List<SugarParameter>()
{
new SugarParameter("@Const1",1)
}, "MappingColumn error");
}
private void IIF()
{
Expression<Func<Student, bool>> exp = it => SqlFunc.IIF(it.Id == 1, 1, 2)==1;
@@ -607,6 +707,48 @@ namespace OrmTest.UnitTest
new SugarParameter("@Const3",1)
}, "IIF2 error");
}
private void IIF3()
{
Expression<Func<Student, bool>> exp = it => SqlFunc.IIF(SqlFunc.Contains(it.Name, "a"), true, false) == true;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(( CASE WHEN ([Name] like '%'+@MethodConst0+'%') THEN @MethodConst1 ELSE @MethodConst2 END ) = @Const3 )", new List<SugarParameter>()
{
new SugarParameter("@MethodConst0","a"),
new SugarParameter("@MethodConst1",true),
new SugarParameter("@MethodConst2",false),
new SugarParameter("@Const3",true)
}, "IIF3 error");
}
private void IIF4()
{
Expression<Func<DataTestInfo2, bool>> exp = it => SqlFunc.IIF(true, it.Bool1, it.Bool2) == true;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(( CASE WHEN ( 1 = 1 ) THEN [Bool1] ELSE [Bool2] END ) = @Const0 )", new List<SugarParameter>()
{
new SugarParameter("@Const0",true)
}, "IIF4 error");
}
private void IIF5()
{
Expression<Func<DataTestInfo, bool>> exp = it => SqlFunc.IIF(true,Convert.ToBoolean(it.Datetime1), SqlFunc.ToBool(it.Datetime1)) == false;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(( CASE WHEN ( 1 = 1 ) THEN CAST([Datetime1] AS BIT) ELSE CAST([Datetime1] AS BIT) END ) = @Const0 )", new List<SugarParameter>()
{
new SugarParameter("@Const0",false)
}, "IIF5 error");
}
}
}

View File

@@ -22,6 +22,10 @@ namespace OrmTest.UnitTest
for (int i = 0; i < base.Count; i++)
{
single();
single2();
single3();
single4();
single5();
Multiple();
singleDynamic();
MultipleDynamic();
@@ -33,37 +37,42 @@ namespace OrmTest.UnitTest
{
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();
expContext.IsSingle = false;
expContext.Resolve(exp, ResolveExpressType.SelectMultiple);
var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(
selectorValue,
pars,
@" @constant1 AS Name , it.Id AS Id , school.Id AS SchoolId , ( it.Id + 1 ) AS TestId ",
@" @constant0 AS [Name] , [it].[Id] AS [Id] , [school].[Id] AS [SchoolId] , ( [it].[Id] + @Id1 ) AS [TestId] ",
new List<SugarParameter>(){
new SugarParameter("@constant1","a")},
new SugarParameter("@constant0","a"),
new SugarParameter("@Id1",1)
},
"Select.Multiple Error");
}
private 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();
expContext.IsSingle = false;
expContext.Resolve(exp, ResolveExpressType.SelectMultiple);
var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(
selectorValue,
pars,
@" @constant1 AS Name , ( it.Id / 2 ) AS Id , school.Id AS SchoolId ",
@" @constant0 AS [Name] , ( [it].[Id] / @Id1 ) AS [Id] , [school].[Id] AS [SchoolId] ",
new List<SugarParameter>(){
new SugarParameter("@constant1","a")},
new SugarParameter("@constant0","a"),
new SugarParameter("@Id1", 2)},
"Select.MultipleDynamic Error");
}
private void single()
{
int p = 1;
Expression<Func<Student, object>> exp = it => new Student() { Name = "a", Id = it.Id, SchoolId = p,TestId=it.Id+1 };
Expression<Func<Student, object>> exp = it => new Student() { Name = "a", Id = it.Id, SchoolId = p,TestId=it.Id+11 };
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.SelectSingle);
var selectorValue = expContext.Result.GetString();
@@ -71,17 +80,75 @@ namespace OrmTest.UnitTest
base.Check(
selectorValue,
pars,
@" @constant1 AS Name , Id AS Id , @constant3 AS SchoolId , ( Id + 1 ) AS TestId ",
@" @constant0 AS [Name] , [Id] AS [Id] , @constant1 AS [SchoolId] , ( [Id] + @Id2 ) AS [TestId] ",
new List<SugarParameter>(){
new SugarParameter("@constant1","a"),
new SugarParameter("@constant3",1)},
new SugarParameter("@constant0","a"),
new SugarParameter("@constant1",1),
new SugarParameter("@Id2",11 ) },
"Select.single Error");
}
private void single2(int p=1)
{
Expression<Func<Student, object>> exp = it => new Student() { Name = "a", Id = it.Id, SchoolId = p, TestId = it.Id + 11 };
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.SelectSingle);
var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(
selectorValue,
pars,
@" @constant0 AS [Name] , [Id] AS [Id] , @constant1 AS [SchoolId] , ( [Id] + @Id2 ) AS [TestId] ",
new List<SugarParameter>(){
new SugarParameter("@constant0","a"),
new SugarParameter("@constant1",1),
new SugarParameter("@Id2",11 ) },
"Select.single Error");
}
private void single3(int p = 1)
{
Expression<Func<Student, object>> exp = it => new DataTestInfo() { Datetime1=DateTime.Now, String=it.Name};
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.SelectSingle);
var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(
@" @constant0 AS [Datetime1] , [Name] AS [String] ", null,selectorValue,null,
"Select.single3 Error");
}
private void single4(int p = 1)
{
Expression<Func<Student, object>> exp = it => it.CreateTime.HasValue;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.IsSingle = false;
expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(
@"( [it].[CreateTime]<>'' AND [it].[CreateTime] IS NOT NULL )", null, selectorValue, null,
"Select.single4 Error");
}
private void single5()
{
var p =(DateTime?) DateTime.Now;
Expression<Func<Student, object>> exp = it => p.HasValue;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.IsSingle = false;
expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(
@"( @constant0<>'' AND @constant0 IS NOT NULL )", new List<SugarParameter>() {
new SugarParameter("@constant0",p)
}, selectorValue, pars,
"Select.single4 Error");
}
private void singleDynamic()
{
string a = "a";
Expression<Func<Student, object>> exp = it => new { x = it.Id, shoolid = 1, name = a,p=it.Id*1 };
Expression<Func<Student, object>> exp = it => new { x = it.Id, shoolid = 1, name = a,p=it.Id*2 };
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.SelectSingle);
var selectorValue = expContext.Result.GetString();
@@ -89,11 +156,12 @@ namespace OrmTest.UnitTest
base.Check(
selectorValue,
pars,
@" Id AS x , @constant2 AS shoolid , @constant3 AS name , ( Id * 1 ) AS p ",
@" [Id] AS [x] , @constant0 AS [shoolid] , @constant1 AS [name] , ( [Id] * @Id2 ) AS [p] ",
new List<SugarParameter>(){
new SugarParameter("@constant2",1),
new SugarParameter("@constant3","a")},
"Select.single Error");
new SugarParameter("@constant0",1),
new SugarParameter("@constant1","a"),
new SugarParameter("@Id2",2)},
"Select.singleDynamic Error");
}
}
}

View File

@@ -21,6 +21,16 @@ namespace OrmTest.UnitTest
base.Begin();
for (int i = 0; i < base.Count; i++)
{
whereSingle23();
whereSingle22();
whereSingle21();
whereSingle20();
whereSingle19();
whereSingle18();
whereSingle17();
whereSingle16();
whereSingle15();
whereSingle1();
whereSingle2();
whereSingle3();
@@ -35,6 +45,7 @@ namespace OrmTest.UnitTest
whereSingle12();
whereSingle13();
whereSingle14();
whereSingle15();
WhereMultiple1();
WhereMultiple2();
@@ -249,6 +260,124 @@ namespace OrmTest.UnitTest
}, "whereSingle14");
}
private void whereSingle15()
{
Expression<Func<DataTestInfo, bool>> exp = it =>it.Money2 == 1;
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( [Money2] = @Const0 )", new List<SugarParameter>()
{
new SugarParameter("@Const0",1)
}, "whereSingle15");
}
private void whereSingle16()
{
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("key", "x1");
Expression<Func<DataTestInfo, bool>> exp = it => it.String == dic["key"];
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( [String] = @Const0 )", new List<SugarParameter>()
{
new SugarParameter("@Const0",dic["key"])
}, "whereSingle16");
}
private void whereSingle17()
{
Expression<Func<DataTestInfo, bool>> exp = it =>true&&it.String.Contains("a");
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(( 1 = 1 ) AND ([String] like '%'+@MethodConst1+'%') )", new List<SugarParameter>()
{
new SugarParameter("@MethodConst1","a")
}, "whereSingle17");
}
private void whereSingle18()
{
Expression<Func<DataTestInfo2, bool>> exp = it => !it.Bool1;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "NOT ( [Bool1]=1 ) ", new List<SugarParameter>()
{
}, "whereSingle18");
}
private void whereSingle19()
{
Expression<Func<DataTestInfo2, bool>> exp = it => it.Bool2.Value==false;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( [Bool2] = @Value0 )", new List<SugarParameter>()
{
new SugarParameter("@Value0",false)
}, "whereSingle19");
}
private void whereSingle20()
{
Expression<Func<DataTestInfo2, bool>> exp = it => it.Bool2.Value == it.Bool1;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( [Bool2] = [Bool1] )", new List<SugarParameter>()
{
}, "whereSingle19");
}
private void whereSingle21()
{
Expression<Func<DataTestInfo2, bool>> exp = it => it.Bool2.Value;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( [Bool2]=1 )", new List<SugarParameter>()
{
}, "whereSingle21");
}
private void whereSingle22()
{
Expression<Func<DataTestInfo2, bool>> exp = it => !it.Bool2.Value;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "NOT ( [Bool2]=1 ) ", new List<SugarParameter>()
{
}, "whereSingle22");
}
private void whereSingle23()
{
decimal? val = 1;
Expression<Func<DataTestInfo, bool>> exp = it => it.Decimal2==val.Value;
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( [Decimal2] = @Const0 )", new List<SugarParameter>()
{
new SugarParameter("@Const0",val)
}, "whereSingle23");
}
}
public class WhereConst

View File

@@ -116,12 +116,37 @@ new List<SugarParameter>() {
insertObj.Name = null;
var t10 = db.Insertable(insertObj).ExecuteCommand();
}
public SqlSugarClient GetInstance()
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true });
return db;
var t11 = db.Insertable(new MyStudent() { Id = 1, Name = "张三" }).AS("Student").ToSql();
base.Check(@"INSERT INTO [Student]
([Name])
VALUES
(@Name) ;SELECT SCOPE_IDENTITY();", new List<SugarParameter>() {
new SugarParameter("@Name","张三")
}, t11.Key, t11.Value, "Insert t11 error");
var t12 = db.Insertable<Student>(new { Name = "a" }).ToSql();
base.Check(@"INSERT INTO [STudent]
([Name])
VALUES
(@Name) ;SELECT SCOPE_IDENTITY();", new List<SugarParameter>() {
new SugarParameter("@Name","a")
}, t12.Key, t12.Value, "Insert t12 error");
var t13 = db.Insertable<Student>(new Dictionary<string, object>() { {"id",0 },{ "name","2"} }).ToSql();
base.Check(@"INSERT INTO [STudent]
([Name])
VALUES
(@Name) ;SELECT SCOPE_IDENTITY();", new List<SugarParameter>() {
new SugarParameter("@Name","2")
}, t13.Key, t13.Value, "Insert t13 error");
}
}
public class MyStudent {
public int Id { get; set; }
public string Name { get; set; }
}
}

View File

@@ -8,7 +8,7 @@ using System.Threading.Tasks;
namespace OrmTest.UnitTest
{
public class Mapping:UnitTestBase
public class Mapping : UnitTestBase
{
private Mapping() { }
public Mapping(int eachCount)
@@ -16,30 +16,53 @@ namespace OrmTest.UnitTest
this.Count = eachCount;
}
public void Init() {
public void Init()
{
var db = GetInstance();
var t1= db.Queryable<Student>().Where(it=>it.Id==1).ToSql();
base.Check("SELECT [ID],[SchoolId],[Name],[CreateTime] FROM [STudent] WHERE ( [ID] = @Id0 ) ", null, t1.Key, null,"Mapping t1 error");
var t1 = db.Queryable<Student>().Where(it => it.Id == 1).ToSql();
base.Check("SELECT [ID],[SchoolId],[Name],[CreateTime] FROM [STudent] WHERE ( [ID] = @Id0 ) ", null, t1.Key, null, "Mapping t1 error");
db.MappingColumns.Add("Id", "id", "School");
var t2 = db.Queryable<Student, School>((st, sc) => new object[] {
JoinType.Left,st.SchoolId==sc.Id
})
.Where(st => st.Id == 1)
.Where((st,sc) => sc.Id == 1)
.Where((st,sc) => sc.Id == st.Id)
.Where((st, sc) => sc.Id == 1)
.Where((st, sc) => sc.Id == st.Id)
.GroupBy(st => st.Id)
.GroupBy((st,sc) => sc.Id).OrderBy(st => st.Id,OrderByType.Asc)
.Select((st,sc)=> new { stid=st.Id,scid=sc.Id}).ToSql();
.GroupBy((st, sc) => sc.Id).OrderBy(st => st.Id, OrderByType.Asc)
.Select((st, sc) => new { stid = st.Id, scid = sc.Id }).ToSql();
base.Check(@"SELECT [st].[ID] AS [stid] , [sc].[id] AS [scid] FROM [STudent] st Left JOIN [School] sc ON ( [st].[SchoolId] = [sc].[id] ) WHERE ( [st].[ID] = @Id0 ) AND ( [sc].[id] = @Id1 ) AND ( [sc].[id] = [st].[ID] )GROUP BY [st].[ID],[sc].[id] ORDER BY [st].[ID] ASC ",
null, t2.Key, null, " Mapping t2 error");
var x2 = GetInstance();
var q = x2.Queryable<Student>().AS("t");
var t3 = q.ToSql();
var t4 = q.ToSql();
base.Check("SELECT [ID],[SchoolId],[Name],[CreateTime] FROM [t] ", null, t3.Key, null, "Mapping t3 error");
base.Check("SELECT [ID],[SchoolId],[Name],[CreateTime] FROM [t] ", null, t4.Key, null, "Mapping t3 error");
var x3 = GetInstance2();
x3.MappingTables.Add("Student", "studenT");
int count = 0;
var t5 = x3.Queryable<Student>().ToPageList(1,2,ref count);
}
public SqlSugarClient GetInstance()
public new SqlSugarClient GetInstance()
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() {InitKeyType=InitKeyType.Attribute, ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true });
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { InitKeyType = InitKeyType.Attribute, ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true });
return db;
}
public SqlSugarClient GetInstance2()
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { InitKeyType = InitKeyType.Attribute, ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true });
db.Ado.IsEnableLogEvent = true;
db.Ado.LogEventStarting = (sql, pars) =>
{
Console.WriteLine(sql + "\r\n" + db.RewritableMethods.SerializeObject(pars));
Console.WriteLine();
};
return db;
}
}

View File

@@ -23,10 +23,67 @@ namespace OrmTest.UnitTest
Q1();
Q2();
Q3();
Q4();
q5();
q6();
q7();
}
base.End("Method Test");
}
private void q6()
{
using (var db = GetInstance())
{
var join6 = db.Queryable<Student, School>((st, sc) => new object[] {
JoinType.Left,st.SchoolId==sc.Id
}).Select((st, sc) => new ViewModelStudent { Name = st.Name, SchoolId = SqlFunc.AggregateMin(sc.Id) }).ToSql();
string sql = @"SELECT [st].[Name] AS [Name] , MIN([sc].[Id]) AS [SchoolId] FROM [STudent] st Left JOIN [School] sc ON ( [st].[SchoolId] = [sc].[Id] ) ";
base.Check(sql, null, join6.Key, null, "join 6 Error");
}
}
private void q7()
{
using (var db = GetInstance())
{
var join7 = db.Queryable<Student, School>((st, sc) => new object[] {
JoinType.Left,st.SchoolId==sc.Id
}).Select((st, sc) => new ViewModelStudent { Name = st.Name, SchoolId = SqlFunc.AggregateMin(sc.Id*1) }).ToSql();
string sql = @"SELECT [st].[Name] AS [Name] , MIN(( [sc].[Id] * @Id0 )) AS [SchoolId] FROM [STudent] st Left JOIN [School] sc ON ( [st].[SchoolId] = [sc].[Id] ) ";
base.Check(sql, new List<SugarParameter>() {
new SugarParameter("@Id0",1)
}, join7.Key, join7.Value, "join 7 Error");
}
}
private void q5()
{
using (var db = GetInstance())
{
db.MappingTables.Add("School", "SchoolTable");
var join5= db.Queryable<Student, School>((st, sc) => st.SchoolId == sc.Id).Select(st => st)
.GroupBy(st=> new{ st.Id,st.Name })
.ToSql();
string sql = @"SELECT st.* FROM [STudent] st ,[SchoolTable] sc WHERE ( [st].[SchoolId] = [sc].[Id] )GROUP BY [st].[ID],[st].[Name] ";
base.Check(sql, null, join5.Key, null, "join 5 Error");
}
}
private void Q4()
{
using (var db = GetInstance())
{
db.MappingTables.Add("School", "SchoolTable");
var join4 = db.Queryable<Student, School>((st, sc) => st.SchoolId == sc.Id).Select(st=>st).ToSql();
string sql = @"SELECT st.* FROM [STudent] st ,[SchoolTable] sc WHERE ( [st].[SchoolId] = [sc].[Id] ) ";
base.Check(sql, null, join4.Key, null, "join 4 Error");
}
}
private void Q3()
{
using (var db = GetInstance())
@@ -69,7 +126,7 @@ namespace OrmTest.UnitTest
}
public SqlSugarClient GetInstance()
public new SqlSugarClient GetInstance()
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer });
db.Ado.IsEnableLogEvent = true;

View File

@@ -79,16 +79,23 @@ namespace OrmTest.UnitTest
new List<SugarParameter>() {
new SugarParameter("@Id0",0)
}, t3.Key, t3.Value, "select t3 Error");
db.Ado.IsEnableLogEvent = true;
db.Ado.LogEventStarting = (sql, pars) =>
{
base.Check(" SELECT COUNT(1) FROM (SELECT [st].[ID] FROM [STudent] st Left JOIN [School] sc ON ( [st].[SchoolId] = [sc].[Id] ) Left JOIN [School] sc2 ON ( [sc2].[Id] = [sc].[Id] ) GROUP BY [st].[ID] ) CountTable ",
null, sql, null, "select t4 Error");
};
var t4 = db.Queryable<Student, School, School>((st, sc, sc2) => new object[] {
JoinType.Left,st.SchoolId==sc.Id,
JoinType.Left,sc2.Id==sc.Id
}).GroupBy(st => st.Id).Select(st=>st.Id).Count();
#endregion
}
}
public SqlSugarClient GetInstance()
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer });
return db;
}
}
}

View File

@@ -35,29 +35,28 @@ namespace OrmTest.UnitTest
var t2 = db.Queryable<Student>().With(SqlWith.NoLock).ToSql();
base.Check("SELECT [ID],[SchoolId],[Name],[CreateTime] FROM [STudent] WITH(NOLOCK)", null, t2.Key, null, "single t2 Error");
var t3 = db.Queryable<Student>().OrderBy(it => it.Id).ToSql();
var t3 = db.Queryable<Student>().OrderBy(it=>it.Id).ToSql();
base.Check("SELECT [ID],[SchoolId],[Name],[CreateTime] FROM [STudent] ORDER BY [ID] ASC", null, t3.Key, null, "single t3 Error");
var t4 = db.Queryable<Student>().OrderBy(it => it.Id).Take(3).ToSql();
base.Check(@"SELECT * FROM (SELECT [ID],[SchoolId],[Name],[CreateTime],ROW_NUMBER() OVER(ORDER BY [ID] ASC) AS RowIndex FROM [STudent] ) T WHERE RowIndex BETWEEN 1 AND 3", null, t4.Key, null, "single t4 Error");
var t5 = db.Queryable<Student>().OrderBy(it => it.Id).Skip(3).ToSql();
base.Check(@"SELECT * FROM (SELECT [ID],[SchoolId],[Name],[CreateTime],ROW_NUMBER() OVER(ORDER BY [ID] ASC) AS RowIndex FROM [STudent] ) T WHERE RowIndex BETWEEN 4 AND 9223372036854775807", null, t5.Key, null, "single t5 Error");
base.Check(@"SELECT * FROM (SELECT [ID],[SchoolId],[Name],[CreateTime],ROW_NUMBER() OVER(ORDER BY [ID] ASC) AS RowIndex FROM [STudent] ) T WHERE RowIndex BETWEEN 4 AND 9223372036854775807", null, t5.Key,null, "single t5 Error");
int pageIndex = 2;
int pageSize = 10;
var t6 = db.Queryable<Student>().OrderBy(it => it.Id, OrderByType.Desc).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToSql();
var t6 = db.Queryable<Student>().OrderBy(it => it.Id,OrderByType.Desc).Skip((pageIndex-1)*pageSize).Take(pageSize).ToSql();
base.Check(@"SELECT * FROM (SELECT [ID],[SchoolId],[Name],[CreateTime],ROW_NUMBER() OVER(ORDER BY [ID] DESC) AS RowIndex FROM [STudent] ) T WHERE RowIndex BETWEEN 11 AND 20", null, t6.Key, null, "single t6 Error");
int studentCount = db.Ado.GetInt("select count(1) from Student");
var countIsSuccess = db.Queryable<Student>().Count() == studentCount;
if (!countIsSuccess)
{
int studentCount=db.Ado.GetInt("select count(1) from Student");
var countIsSuccess=db.Queryable<Student>().Count()== studentCount;
if (!countIsSuccess) {
throw new Exception(" single countIsSuccess Error");
}
var t7 = db.Queryable<Student>().OrderBy(it => it.Id, OrderByType.Desc).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToPageList(pageIndex, pageSize, ref studentCount);
var t7 = db.Queryable<Student>().OrderBy(it => it.Id, OrderByType.Desc).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToPageList(pageIndex,pageSize,ref studentCount);
countIsSuccess = studentCount == db.Queryable<Student>().OrderBy(it => it.Id, OrderByType.Desc).Skip((pageIndex - 1) * pageSize).Take(pageSize * pageIndex).Count();
if (!countIsSuccess)
{
@@ -65,7 +64,7 @@ namespace OrmTest.UnitTest
}
int studentMin = db.Ado.GetInt("select min(id) from Student");
var minIsSuccess = db.Queryable<Student>().Min(it => it.Id) == studentMin;
var minIsSuccess = db.Queryable<Student>().Min(it=>it.Id) == studentMin;
if (!minIsSuccess)
{
throw new Exception("single minIsSuccess Error");
@@ -93,28 +92,31 @@ namespace OrmTest.UnitTest
}
var t8 = db.Queryable<Student>()
.Where(it => it.Id == 1)
.WhereIF(true, it => SqlFunc.Contains(it.Name, "a"))
.OrderBy(it => it.Id, OrderByType.Desc).Skip((pageIndex - 1) * pageSize).Take(pageSize).With(SqlWith.NoLock).ToSql();
.Where(it=>it.Id==1)
.WhereIF(true,it=> SqlFunc.Contains(it.Name,"a"))
.OrderBy(it => it.Id, OrderByType.Desc).Skip((pageIndex - 1) * pageSize).Take(pageSize ).With(SqlWith.NoLock).ToSql();
base.Check(@"SELECT * FROM (SELECT [ID],[SchoolId],[Name],[CreateTime],ROW_NUMBER() OVER(ORDER BY [ID] DESC) AS RowIndex FROM [STudent] WITH(NOLOCK) WHERE ( [ID] = @Id0 ) AND ([Name] like '%'+@MethodConst1+'%') ) T WHERE RowIndex BETWEEN 11 AND 20", new List<SugarParameter>() {
new SugarParameter("@Id0",1),new SugarParameter("@MethodConst1","a")
}, t8.Key, t8.Value, "single t8 Error");
}, t8.Key, t8.Value,"single t8 Error");
var t9 = db.Queryable<Student>()
.In(1)
.Select(it => new { it.Id, it.Name, x = it.Id }).ToSql();
.Select(it => new { it.Id, it.Name,x=it.Id }).ToSql();
base.Check("SELECT [ID] AS [Id] , [Name] AS [Name] , [ID] AS [x] FROM [STudent] WHERE [Id] IN (@InPara0) ", new List<SugarParameter>() {
new SugarParameter("@InPara0",1) }, t9.Key, t9.Value, "single t9 error");
new SugarParameter("@InPara0",1) },t9.Key,t9.Value, "single t9 error");
var t10 = db.Queryable<Student>().Select(it => new StudentEnum() { Id = SqlFunc.GetSelfAndAutoFill(it.Id) }).ToSql();
base.Check("SELECT * FROM [STudent] ", null, t10.Key, t10.Value, "single t10 error");
var t11= db.Queryable<Student>().GroupBy("id").OrderBy("id").Select("id").ToSql();
base.Check("SELECT id FROM [STudent] GROUP BY id ORDER BY id ", null, t11.Key, t11.Value, "single t11 error");
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");
}
}
public SqlSugarClient GetInstance()
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer });
return db;
}
}
}

View File

@@ -23,10 +23,5 @@ namespace OrmTest.UnitTest
var x = db.Queryable<Student>().ToList();
}
}
public SqlSugarClient GetInstance()
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true });
return db;
}
}
}

View File

@@ -9,10 +9,6 @@ namespace OrmTest.UnitTest
{
public class MapColumn : UnitTestBase
{
public SqlSugarClient GetInstance()
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer });
return db;
}
}
}

View File

@@ -19,10 +19,5 @@ namespace OrmTest.UnitTest
var x = db.Queryable<Student>().ToList();
}
}
public SqlSugarClient GetInstance()
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true });
return db;
}
}
}

View File

@@ -45,5 +45,11 @@ namespace OrmTest.UnitTest
}
}
}
public SqlSugarClient GetInstance()
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true });
return db;
}
}
}

View File

@@ -124,12 +124,42 @@ namespace OrmTest.UnitTest
t10.Value,
"Update 10 error"
);
var t11 = db.Updateable<DataTestInfo>().UpdateColumns(it => new DataTestInfo() { Datetime1=DateTime.MaxValue }).Where(it => it.Int1 == 11).ToSql();
base.Check(@"UPDATE [DataTestInfo] SET
[Datetime1] = @constant0 WHERE ( [Int1] = @Int11 )", new List<SugarParameter>() {
new SugarParameter("@Int11",11),
new SugarParameter("@constant0",DateTime.MaxValue) },
t11.Key,
t11.Value,
"Update 11 error"
);
var t12 = db.Updateable<DataTestInfo>().UpdateColumns(it => new DataTestInfo() { Int2 = it.Int2+1 }).Where(it => it.Int1 == 11).ToSql();
base.Check(@"UPDATE [DataTestInfo] SET
[Int2] = ( [Int2] + @Const0 ) WHERE ( [Int1] = @Int11 )", new List<SugarParameter>() {
new SugarParameter("@Int11",11),
new SugarParameter("@Const0",1) },
t12.Key,
t12.Value,
"Update 12 error"
);
var t13 = db.Updateable<Student>(new { Name = "a", id=1 }).ToSql();
base.Check(@"UPDATE [STudent] SET
[Name]=@Name WHERE [Id]=@Id", new List<SugarParameter>() {
new SugarParameter("@Name","a"),
new SugarParameter("@ID",1)
}, t13.Key, t13.Value, "Insert t13 error");
var t14 = db.Updateable<Student>(new Dictionary<string, object>() { { "id", 0 }, { "name", "2" } }).ToSql();
base.Check(@"UPDATE [STudent] SET
[Name]=@Name WHERE [Id]=@Id", new List<SugarParameter>() {
new SugarParameter("@Name", "2"),
new SugarParameter("@ID", 0)
}, t14.Key, t14.Value, "Insert t14 error");
}
public SqlSugarClient GetInstance()
{
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true });
return db;
}
}
}