2021-01-18 00:37:58 +08:00
using SqlSugar ;
using System ;
2020-12-20 00:14:33 +08:00
using System.Collections.Generic ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
2020-12-28 12:58:49 +08:00
namespace OrmTest
2020-12-20 00:14:33 +08:00
{
public partial class NewUnitTest
{
2020-12-28 12:58:49 +08:00
public static void Queryable2 ( )
{
2021-01-01 17:40:07 +08:00
var list4 = Db . Queryable < ABMapping > ( )
. Mapper ( it = > it . A , it = > it . AId )
. Where ( it = > it . A . Name = = "a" )
. ToList ( ) ;
var list5 = Db . Queryable < ABMapping > ( )
. Mapper ( it = > it . A , it = > it . AId , it = > it . A . Id )
. Where ( it = > it . A . Name = = "a" )
. ToList ( ) ;
2020-12-28 12:58:49 +08:00
2021-01-17 02:35:33 +08:00
var list3 = Db . Queryable < Order > ( )
. Mapper ( it = > it . Items , it = > it . Items . First ( ) . OrderId )
. Where ( it = > it . Items . Count ( ) > 0 )
. ToList ( ) ;
var list6 = Db . Queryable < Order > ( )
. Mapper ( it = > it . Items , it = > it . Items . First ( ) . OrderId )
. Where ( it = > it . Items . Any ( ) )
. ToList ( ) ;
2021-07-19 13:19:26 +08:00
var list7 = Db . Queryable < Order > ( )
2021-01-31 16:15:53 +08:00
. Mapper ( it = > it . Items , it = > it . Items . First ( ) . OrderId )
. Where ( it = > it . Items . Any ( y = > y . ItemId = = 1 ) )
. ToList ( ) ;
2021-01-18 00:37:58 +08:00
2021-07-19 13:19:26 +08:00
var sql = Db . Queryable < Order > ( ) . AS ( "[order]" ) . ToList ( ) ;
2021-01-18 00:37:58 +08:00
var sql1 = Db . Queryable < Order , OrderItem , Custom > ( ( o , i , c ) = > new JoinQueryInfos (
JoinType . Left , o . Id = = i . OrderId ,
JoinType . Left , c . Id = = o . CustomId
) )
. AS ( "[aa]" )
. AS < OrderItem > ( "[xx]" )
. AS < Custom > ( "[yy]" )
. Select < ViewOrder > ( ) . ToSql ( ) . Key ;
if ( ! sql1 . Contains ( "[aa]" ) | | ! sql1 . Contains ( "[xx]" ) | | ! sql1 . Contains ( "[yy]" ) )
{
throw new Exception ( "unit queryable2 " ) ;
}
var sql2 = Db . Queryable < OrderItem > ( ) . AS ( "[zz]" ) . ToSql ( ) . Key ;
if ( sql2 ! = "SELECT [ItemId],[OrderId],[Price],[CreateTime] FROM [zz] " )
{
throw new Exception ( "unit queryable2 " ) ;
}
Db . Queryable < Order , OrderItem , Custom > ( ( o , i , c ) = > new JoinQueryInfos (
JoinType . Left , o . Id = = i . OrderId ,
JoinType . Left , c . Id = = o . CustomId
) )
. AS ( "[order]" )
. AS < OrderItem > ( "[orderdetail]" )
. AS < Custom > ( "[custom]" )
. Select < ViewOrder > ( ) . ToList ( ) ;
Db . Queryable < object > ( ) . AS ( "[order]" ) . Select ( "*" ) . ToList ( ) ;
2021-07-19 13:19:26 +08:00
var qu1 = Db . Queryable < Order > ( ) . Select ( it = > new
2021-01-18 00:37:58 +08:00
{
id = it . Id
} ) . MergeTable ( ) . Select < Order > ( ) ;
var qu2 = Db . Queryable < Order > ( ) . Select ( it = > new
{
id = it . Id ,
2021-07-19 13:19:26 +08:00
name = it . Name
2021-01-18 00:37:58 +08:00
} ) . MergeTable ( ) . Select < Order > ( ) ;
2021-07-19 13:19:26 +08:00
var list = Db . Queryable ( qu1 , qu2 , JoinType . Left , ( x , y ) = > x . Id = = y . Id ) . Select ( ( x , y ) = > new
2021-01-18 00:37:58 +08:00
{
2021-07-19 13:19:26 +08:00
id1 = x . Id ,
name = y . Name
2021-01-18 00:37:58 +08:00
} ) . ToList ( ) ;
2021-01-26 16:00:19 +08:00
var qu3 = Db . Queryable < Order > ( ) . Select ( it = > new
{
id = it . Id ,
name = it . Name
} ) . MergeTable ( )
2021-07-19 13:19:26 +08:00
. Where ( it = > 2 > it . id ) . Select ( it = > new Order ( )
{
Id = SqlFunc . IIF ( 2 > it . id , 1 , 2 )
2021-01-26 16:00:19 +08:00
} ) . ToList ( ) ;
2021-01-26 16:30:18 +08:00
2021-07-19 13:19:26 +08:00
var qu4 = Db . Queryable < Order > ( ) . OrderBy ( it = > it . Id + it . Id ) . ToList ( ) ;
2021-03-04 19:36:16 +08:00
var list11 = Db . Queryable < A > ( )
2021-07-19 13:19:26 +08:00
2021-03-04 19:36:16 +08:00
. ToList ( ) ;
2021-03-04 22:31:31 +08:00
var list8 = Db . Queryable < A > ( )
2021-07-19 13:19:26 +08:00
. Mapper < A , B , ABMapping > ( it = > ManyToMany . Config ( it . AId , it . BId ) )
2021-03-04 22:31:31 +08:00
. ToList ( ) ;
2021-03-04 19:36:16 +08:00
2021-03-04 23:01:02 +08:00
Db . CodeFirst . InitTables < ABMap , TableA , TableB > ( ) ;
Db . DbMaintenance . TruncateTable ( "TableA" ) ;
Db . DbMaintenance . TruncateTable ( "Tableb" ) ;
Db . DbMaintenance . TruncateTable ( "ABMap" ) ;
2021-07-19 13:19:26 +08:00
Db . Insertable ( new TableA ( ) { id = 1 , Name = "A1" } ) . ExecuteCommand ( ) ;
Db . Insertable ( new TableA ( ) { id = 2 , Name = "A1" } ) . ExecuteCommand ( ) ;
Db . Insertable ( new TableB ( ) { id = 1 , Name = "B1" } ) . ExecuteCommand ( ) ;
Db . Insertable ( new TableB ( ) { id = 2 , Name = "B2" } ) . ExecuteCommand ( ) ;
Db . Insertable ( new ABMap ( ) { Aid = 1 , Bid = 1 } ) . ExecuteCommand ( ) ;
2021-03-04 23:01:02 +08:00
Db . Insertable ( new ABMap ( ) { Aid = 1 , Bid = 2 } ) . ExecuteCommand ( ) ;
Db . Insertable ( new ABMap ( ) { Aid = 2 , Bid = 1 } ) . ExecuteCommand ( ) ;
2021-07-19 13:19:26 +08:00
Db . Insertable ( new ABMap ( ) { Aid = 2 , Bid = 2 } ) . ExecuteCommand ( ) ;
var list9 = Db . Queryable < TableA > ( )
2021-03-04 23:01:02 +08:00
. Mapper < TableA , TableB , ABMap > ( it = > ManyToMany . Config ( it . Aid , it . Bid ) ) . ToList ( ) ;
2021-07-19 13:19:26 +08:00
var _db = Db ;
int [ ] communities = { 1 , 2 , 3 , 4 , 5 } ;
_db . QueryFilter . Add ( new TableFilterItem < Dat_WorkBill > ( it = > communities . Contains ( it . CommunityID ? ? 0 ) ) ) ;
Db . CodeFirst . InitTables < Dat_WorkBill , Base_Community > ( ) ;
var rlt = _db . Queryable ( _db . Queryable < Dat_WorkBill > ( ) , _db . Queryable < Base_Community > ( ) ,
JoinType . Left , ( bill , com ) = > bill . CommunityID = = com . CommunityID )
. Where ( ( bill , com ) = > com . IsEnable = = 1 )
. Select ( ( bill , com ) = > new
{
ID = bill . WorkBillID ,
Name = com . CommunityName
} )
. ToList ( ) ;
2021-07-29 19:47:24 +08:00
var sql12 = Db . Queryable < Order , OrderItem , Custom > ( ( o , i , c ) = > true )
. AS ( "[aa]" )
. AS < OrderItem > ( "[xx]" )
. AS < Custom > ( "[yy]" ) . ToSql ( ) ;
2021-07-19 13:19:26 +08:00
2021-07-31 18:20:16 +08:00
var list12 = Db . Queryable < Order > ( )
. Select ( it = > new
{
name = it . Name ,
customName = SqlFunc . MappingColumn ( default ( string ) , " (select top 1 id from [Order] ) " )
} ) . ToList ( ) ;
var p1 = "1" ;
var p2 = "2" ;
var list13 = Db . Queryable < Order > ( )
. Select ( it = > new
{
name = it . Name ,
customName = SqlFunc . MappingColumn ( default ( string ) , $" (select top 1 id from [Order] where id={p1} or id={p2} ) " )
} ) . ToList ( ) ;
2022-04-06 14:47:11 +08:00
//int id = 0;
2021-08-03 22:22:21 +08:00
Db . Queryable ( Db . Queryable < Order > ( ) . Where ( it = > it . Id = = 1 ) ) . Where ( it = > it . Id = = 1 ) . ToList ( ) ;
2021-07-19 13:19:26 +08:00
_db . QueryFilter . Clear ( ) ;
2021-08-21 00:18:45 +08:00
Db . CodeFirst . InitTables < UnitEnumTest > ( ) ;
Db . Insertable ( new UnitEnumTest ( ) { type = null } ) . ExecuteCommand ( ) ;
Db . Insertable ( new UnitEnumTest ( ) { type = DbType . MySql } ) . ExecuteCommand ( ) ;
var xx = Db . Queryable < UnitEnumTest > ( ) . ToList ( ) ;
2021-08-21 00:27:13 +08:00
var xxx = Db . Storageable ( new UnitEnumTest ( )
{
Name = "a" ,
type = DbType . Sqlite
} ) . WhereColumns ( it = > it . type ) . ToStorage ( ) ;
xxx . AsUpdateable . ExecuteCommand ( ) ;
2021-08-30 21:42:31 +08:00
var getOrderBy2 = Db
. Queryable < Order > ( )
. Select ( it = > new Order { Name = it . Name . Replace ( "0" , "1" ) } ) . MergeTable ( ) . Select < Order > ( ) . Where ( it = > it . Name . Equals ( "2" ) )
. ToList ( ) ;
2021-09-05 01:29:55 +08:00
var list14 = Db . Queryable < Order , Order , Order > ( ( o1 , o2 , o3 ) = >
new JoinQueryInfos ( JoinType . Inner , o1 . Id = = o2 . Id * 2 , JoinType . Inner , o1 . Id = = o3 . Id * 4 )
)
. Select ( ( o1 , o2 , o3 ) = > new
{
id = o1 . Id ,
x = o1 ,
x2 = o2 ,
x3 = o3
} ) . ToList ( ) ;
2021-08-30 21:42:31 +08:00
2021-09-05 01:29:55 +08:00
var list15 = Db . Queryable < Order , Order , Order > ( ( o1 , o2 , o3 ) = >
new JoinQueryInfos ( JoinType . Inner , o1 . Id = = o2 . Id * 2 , JoinType . Inner , o1 . Id = = o3 . Id * 4 )
)
. Select ( ( o1 , o2 , o3 ) = > new TestModel1
{
id = o1 . Id . SelectAll ( ) ,
x = o1 ,
x2 = o2 ,
x3 = o3
} ) . ToList ( ) ;
2021-09-16 14:44:57 +08:00
var list16 = Db . Queryable < Order > ( ) . OrderBy ( it = > it . CreateTime . ToString ( "yyyy-MM-dd" ) ) . Select ( it = > new { x = it . CreateTime . ToString ( "yyyy-MM-dd" ) } ) . ToList ( ) ;
2021-09-24 21:29:39 +08:00
Db . CodeFirst . InitTables < TB_ClientConfig , TB_AdminUser > ( ) ;
Db . Insertable ( new TB_ClientConfig ( )
{
AlipayAppID = "aa" ,
AlipayPaymentOpen = true ,
AlipayPrivateKey = "a" ,
AlipayPublicKey = "" ,
AlipayWithdrawOpen = true ,
CreateAdminUserID = 1 ,
CreateDateTime = 11 ,
Extension = "a" ,
ModifyAdminUserID = 1 ,
ModifyDateTime = 1 ,
Name = "a" ,
WechatPayMchID = "a" ,
OpenWechatAppID = "a" ,
OpenWechatAppSecret = "a" ,
WechatMiniOriginalID = "b" ,
WechatPayApiKey = "a" ,
WechatPayApiKeyV3 = "z"
} ) . ExecuteReturnSnowflakeId ( ) ;
var list17 = Db . Queryable < TB_ClientConfig , TB_AdminUser , TB_AdminUser > ( ( f , c , m ) = > new JoinQueryInfos (
JoinType . Left , f . CreateAdminUserID = = c . ID ,
JoinType . Left , f . ModifyAdminUserID = = m . ID ) )
. OrderBy ( f = > f . CreateDateTime , OrderByType . Desc )
. Select ( ( f , c , m ) = > new
{
f ,
CreateAdminUserName = c . Name ,
ModifyAdminUserName = m . Name
} ) . ToList ( ) ;
2021-09-25 18:36:56 +08:00
var listxxxxxxxxxxx = Db . Queryable < Tree2 , Tree2 > ( ( a , b ) = > new JoinQueryInfos ( JoinType . Inner , a . ParentId = = b . Id ) )
. Select ( ( a , b ) = > new {
user = a ,
parentUser = b
} )
. ToList ( ) ;
2021-12-07 23:36:06 +08:00
var sql111 = Db . SqlQueryable < Order > ( "select 1 id " ) . ToSql ( ) . Key ;
var sql222 = Db . SqlQueryable < Order > ( "select 1 id " ) . Where ( it = > it . Id = = 1 ) . ToSql ( ) . Key ;
Check . Exception ( "select 1 id " ! = sql111 , "unit query error" ) ;
Check . Exception ( "SELECT t.* FROM (select 1 id ) t WHERE ( [Id] = @Id0 )" ! = sql222 , "unit query error" ) ;
2022-01-04 12:19:45 +08:00
var query5 = Db . Queryable < Order > ( )
. LeftJoin < Custom > ( ( o , cus ) = > o . CustomId = = cus . Id )
. Where ( ( o ) = > o . Id > 0 )
. Select ( ( o , cus ) = > new VUOrder { Ixd = o . Id . SelectAll ( ) } )
. ToList ( ) ;
Check . Exception ( query5 . Any ( ) & & query5 . First ( ) . Ixd = = 0 , "unit error" ) ;
2022-03-14 14:03:43 +08:00
var query6 = Db . Queryable < Order > ( )
. LeftJoin < Custom > ( ( o , cus ) = > o . Id . ToString ( ) . Contains ( cus . Id . ToString ( ) ) )
. Where ( ( o ) = > o . Id > 0 )
. ToList ( ) ;
2022-06-07 14:25:18 +08:00
var db = Db ;
db . CurrentConnectionConfig . MoreSettings = new ConnMoreSettings
{
IsWithNoLockQuery = true ,
} ;
var sql13 = db . Queryable < Order > ( ) . AS ( "[ORDER]" )
. LeftJoin < OrderItem > ( ( o , i ) = > o . Id = = i . OrderId ) . AS < OrderItem > ( "[ORDERDETAIL]" )
. LeftJoin < Custom > ( ( o , i , c ) = > c . Id = = o . CustomId ) . AS < Custom > ( "[CUSTOM]" )
. Select < ViewOrder > ( ) . ToList ( ) ;
2022-06-11 21:40:03 +08:00
var sql14 = db . SqlQueryable < Order > ( "select * from [ORDER]" )
. LeftJoin < OrderItem > ( ( o , i ) = > o . Id = = i . OrderId ) . AS < OrderItem > ( "[ORDERDETAIL]" )
. LeftJoin < Custom > ( ( o , i , c ) = > c . Id = = o . CustomId ) . AS < Custom > ( "[CUSTOM]" )
. Select < ViewOrder > ( ) . ToSql ( ) ;
2023-01-12 22:39:19 +08:00
if ( sql14 . Key ! = ( "SELECT [c].[Name] AS [CustomName],[o].[Id] AS [Id],[o].[Name] AS [Name],[o].[Price] AS [Price],[o].[CreateTime] AS [CreateTime],[o].[CustomId] AS [CustomId] FROM (SELECT * FROM (select * from [ORDER]) t ) [o] Left JOIN [ORDERDETAIL] [i] ON ( [o].[Id] = [i].[OrderId] ) Left JOIN [CUSTOM] [c] ON ( [c].[Id] = [o].[CustomId] ) " ) )
2022-06-11 21:40:03 +08:00
{
throw new Exception ( "unit error" ) ;
}
2022-08-03 01:29:35 +08:00
var sql15 = db . Updateable ( new List < UintAinstringHAHA > ( )
{
new UintAinstringHAHA ( ) { id = "1" , xame = "a" } ,
new UintAinstringHAHA ( ) { id = "2" , xame = "a" }
} ) . ToSql ( ) . Key ;
db . CodeFirst . InitTables < UintAinstringHAHA > ( ) ;
db . DbMaintenance . TruncateTable < UintAinstringHAHA > ( ) ;
db . Insertable ( new List < UintAinstringHAHA > ( )
{
new UintAinstringHAHA ( ) { id = "1" , xame = "a" } ,
new UintAinstringHAHA ( ) { id = "2" , xame = "a" }
} ) . ExecuteCommand ( ) ;
var rows = db . Ado . ExecuteCommand ( sql15 ) ;
if ( sql15 . ToLower ( ) . Contains ( "n'" ) | | rows ! = 2 )
{
throw new Exception ( "unit error" ) ;
}
2022-12-27 19:52:15 +08:00
db . CodeFirst . InitTables < UnitPeople > ( ) ;
db . Insertable ( new UnitPeople ( )
{
Name = "a" ,
EntryDate = DateTime . Now ,
Work = "1" ,
Company = "a"
} ) . ExecuteCommand ( ) ;
var list10 = db . Queryable < UnitPeople > ( ) . Select ( a = > new UnitPeople
{
Name = a . Name ,
Job = new JobClass { Company = a . Company , Work = a . Work } ,
EntryDate = a . EntryDate
} ) . ToList ( ) ;
2023-01-24 12:54:47 +08:00
var x1 = 0 ;
var x2 = 0 ;
var x3 = 0 ;
db . Queryable < Order > ( ) . Where ( it = > SqlFunc . IF ( true ) . Return ( - x1 ) . ElseIF ( it . Id = = 1 ) . Return ( - x2 ) . End ( - x3 ) = = 1 ) . ToArray ( ) ;
2023-05-30 12:25:21 +08:00
var test52 = db . Queryable < Order > ( )
. Select ( m = > new
{
ChildCount = SqlFunc . Subqueryable < Custom > ( )
. Where ( ( x ) = > x . Name . Substring ( 0 , m . Name . Length + 1 ) = = m . Name + "-" )
. Count ( ) ,
} )
. ToSqlString ( ) ;
var test53 = db . Queryable < Order > ( )
. Select ( m = > new
{
ChildCount = SqlFunc . Subqueryable < Custom > ( )
. Where ( ( x ) = > x . Name . Substring ( 0 , m . Name . Length + 1 ) = = m . Name + "-" )
. Count ( ) ,
} )
. ToList ( ) ;
if ( ! test52 . Contains ( "[m].[Name]" ) )
{
throw new Exception ( "unit error" ) ;
}
2022-12-27 19:52:15 +08:00
}
public class UnitPeople
{
public string Name { get ; set ; }
[SugarColumn(IsIgnore =true)]
public JobClass Job { get ; set ; }
public DateTime ? EntryDate { get ; set ; }
public string Company { get ; set ; }
public string Work { get ; set ; }
2022-08-03 01:29:35 +08:00
}
2022-12-27 19:52:15 +08:00
public class JobClass
{
public string Company { get ; set ; }
public string Work { get ; set ; }
}
2022-08-03 01:29:35 +08:00
public class UintAinstringHAHA
{
[SugarColumn(IsPrimaryKey =true,SqlParameterDbType =System.Data.DbType.AnsiString)]
public string id { get ; set ; }
[SugarColumn(SqlParameterDbType = System.Data.DbType.AnsiString)]
public string xame { get ; set ; }
2022-01-04 12:19:45 +08:00
}
public class VUOrder
{
[SugarColumn(ColumnName ="Id")]
public int Ixd { get ; set ; }
[SugarColumn(ColumnName = "Name")]
public string nxxxame { get ; set ; }
2021-09-25 18:36:56 +08:00
}
[SugarTable("tree ")]
public class Tree2
{
[SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
public int Id { get ; set ; }
[SugarColumn(ColumnName = "ParentId")]
public int ParentId { get ; set ; }
[SugarColumn(ColumnName = "name")]
public string Name { get ; set ; }
2021-08-21 00:18:45 +08:00
}
public class UnitEnumTest
{
[SqlSugar.SugarColumn(IsNullable =true)]
public DbType ? type { get ; set ; }
2021-08-21 00:27:13 +08:00
[SqlSugar.SugarColumn(IsNullable = true)]
public string Name { get ; set ; }
2021-03-04 23:01:02 +08:00
}
2021-07-19 13:19:26 +08:00
public class Dat_WorkBill
{
public int? CommunityID { get ; set ; }
public string WorkBillID { get ; set ; }
}
public class Base_Community
{
public int? CommunityID { get ; set ; }
public int IsEnable { get ; set ; }
public string CommunityName { get ; set ; }
}
2021-03-04 23:01:02 +08:00
2021-07-19 13:19:26 +08:00
public class ABMap
{
2021-03-04 23:01:02 +08:00
public int Aid { get ; set ; }
public int Bid { get ; set ; }
}
2021-07-19 13:19:26 +08:00
public class TableA
{
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
2021-03-04 23:01:02 +08:00
public int id { get ; set ; }
public string Name { get ; set ; }
2021-07-19 13:19:26 +08:00
[SugarColumn(IsIgnore = true)]
2021-03-04 23:01:02 +08:00
public List < TableB > Childlist { get ; set ; }
}
public class TableB
{
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int id { get ; set ; }
public string Name { get ; set ; }
2020-12-28 12:58:49 +08:00
}
2021-09-05 01:29:55 +08:00
public class TestModel1
{
public int id { get ; set ; }
public Order x { get ; set ; }
public Order x2 { get ; set ; }
public Order x3 { get ; set ; }
public string name { get ; set ; }
}
2020-12-20 00:14:33 +08:00
}
2021-09-05 01:29:55 +08:00
2020-12-20 00:14:33 +08:00
}