From 1ef6ce503ed1d44ad321296f15e27bec38aea4c0 Mon Sep 17 00:00:00 2001
From: skx <610262374@qq.com>
Date: Mon, 18 Jan 2021 00:54:51 +0800
Subject: [PATCH] Update demo
---
.../SqlSeverTest/SqlSeverTest.csproj | 4 +
.../SqlSeverTest/UnitTest/Main.cs | 3 +
.../SqlSeverTest/UnitTest/Test01.cs | 100 ++++++++++++
.../SqlSeverTest/UnitTest/UCodeFirst.cs | 10 ++
.../SqlSeverTest/UnitTest/UInsert.cs | 69 ++++++++
.../SqlSeverTest/UnitTest/UQueryable.cs | 149 ++++++++++++++++--
.../SqlSeverTest/UnitTest/UQueryable2.cs | 83 ++++++++++
.../SqlSeverTest/UnitTest/UTran.cs | 34 ++++
.../SqlSeverTest/UnitTest/Updateable.cs | 41 +++--
9 files changed, 465 insertions(+), 28 deletions(-)
create mode 100644 Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Test01.cs
create mode 100644 Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UInsert.cs
create mode 100644 Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable2.cs
create mode 100644 Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UTran.cs
diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/SqlSeverTest.csproj b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/SqlSeverTest.csproj
index c2b9b36c5..dddc6bed0 100644
--- a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/SqlSeverTest.csproj
+++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/SqlSeverTest.csproj
@@ -9,4 +9,8 @@
+
+
+
+
diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Main.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Main.cs
index 7befb2146..21243c692 100644
--- a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Main.cs
+++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Main.cs
@@ -31,12 +31,15 @@ namespace OrmTest
}
public static void Init()
{
+ Tran();
+ Insert();
Queue();
CodeFirst();
Updateable();
Json();
Ado();
Queryable();
+ Queryable2();
QueryableAsync();
//Thread();
//Thread2();
diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Test01.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Test01.cs
new file mode 100644
index 000000000..891385426
--- /dev/null
+++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Test01.cs
@@ -0,0 +1,100 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OrmTest
+{
+ public partial class NewUnitTest
+ {
+ [SugarTable("UnitUser")]
+ public class User2
+ {
+ [SugarColumn(IsPrimaryKey = true)]
+ public int Id { set; get; }
+ public string Name { set; get; }
+ public int DepartmentId { set; get; }
+ }
+ [SugarTable("UnitOrder")]
+ public class Order2
+ {
+ [SugarColumn(IsPrimaryKey = true)]
+ public int Id { set; get; }
+ public string Name { set; get; }
+ public int UserId { set; get; }
+ }
+ [SugarTable("UnitDepartment")]
+ public class Department2
+ {
+ [SugarColumn(IsPrimaryKey = true)]
+ public int Id { set; get; }
+ public string Name { set; get; }
+ }
+ public static async Task QueryableAsync2()
+ {
+ DataBaseInitialize();
+ var context = new SqlSugarClient(new ConnectionConfig()
+ {
+ ConnectionString = "Data Source=.;Initial Catalog=test2222;User id=sa;Password=haosql;pooling=true;min pool size = 2;max pool size=100;",
+ DbType = DbType.SqlServer,
+ IsAutoCloseConnection = true,
+ InitKeyType = InitKeyType.Attribute,
+ });
+ //调式代码 用来打印SQL
+ context.Aop.OnLogExecuting = (sql, pars) =>
+ {
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "开始\r\n" + sql + "\r\n" + context.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
+ };
+ context.Aop.OnLogExecuted = (sql, pars) =>
+ {
+ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "结束\r\n" + sql + "\r\n" + context.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
+ };
+ var recordCount = new RefAsync();
+ //var result = await context.Queryable((o, u, d) => new JoinQueryInfos
+ var result = await context.Queryable((o, u) => new JoinQueryInfos
+ (
+ JoinType.Left, o.UserId == u.Id
+ //,JoinType.Left, u.DepartmentId == d.Id
+ ))
+ .AS("dbo.UnitOrder")
+ .AS("test1111.dbo.UnitUser")
+ //.AS("test1.dbo.Department")
+ .Select(o => new User2() { Id = o.Id, Name = o.Name })
+ .ToPageListAsync(1, 10, recordCount);
+
+ Console.ReadLine();
+ }
+ public static void DataBaseInitialize()
+ {
+ //数据库1
+ var context1 = new SqlSugarClient(new ConnectionConfig()
+ {
+ ConnectionString = "Data Source=.;Initial Catalog=test1111;User id=sa;Password=haosql;pooling=true;min pool size = 2;max pool size=100;",
+ DbType = DbType.SqlServer,
+ IsAutoCloseConnection = true,
+ InitKeyType = InitKeyType.Attribute,
+ });
+ context1.DbMaintenance.CreateDatabase();
+ context1.CodeFirst.InitTables(typeof(User2));
+ context1.CodeFirst.InitTables(typeof(Department2));
+ if (context1.Queryable().Where(t => t.Id == 1).Count() == 0)
+ context1.Insertable(new User2() { Id = 1, Name = "TestUser", DepartmentId = 1 }).ExecuteCommand();
+ if (context1.Queryable().Where(t => t.Id == 1).Count() == 0)
+ context1.Insertable(new Department2() { Id = 1, Name = "TestDepartment" }).ExecuteCommand();
+ //数据库2
+ var context2 = new SqlSugarClient(new ConnectionConfig()
+ {
+ ConnectionString = "Data Source=.;Initial Catalog=test2222;User id=sa;Password=haosql;pooling=true;min pool size = 2;max pool size=100;",
+ DbType = DbType.SqlServer,
+ IsAutoCloseConnection = true,
+ InitKeyType = InitKeyType.Attribute,
+ });
+ context2.DbMaintenance.CreateDatabase();
+ context2.CodeFirst.InitTables(typeof(Order2));
+ if (context1.Queryable().Where(t => t.Id == 1).Count() == 0)
+ context2.Insertable(new Order2() { Id = 1, Name = "Order", UserId = 1 }).ExecuteCommand();
+ }
+ }
+}
diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UCodeFirst.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UCodeFirst.cs
index 3c853a7d5..f80ffa02b 100644
--- a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UCodeFirst.cs
+++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UCodeFirst.cs
@@ -10,9 +10,19 @@ namespace OrmTest
{
public static void CodeFirst()
{
+ Db.CodeFirst.InitTables();
if (Db.DbMaintenance.IsAnyTable("UnitCodeTest1", false))
Db.DbMaintenance.DropTable("UnitCodeTest1");
Db.CodeFirst.InitTables();
+ Db.CodeFirst.InitTables();
+ }
+
+ public class UnitCodeFirstpks2
+ {
+ [SqlSugar.SugarColumn(IsPrimaryKey =true)]
+ public string id { get; set; }
+ [SqlSugar.SugarColumn(IsPrimaryKey = true)]
+ public string id2 { get; set; }
}
public class UnitCodeTest1
{
diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UInsert.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UInsert.cs
new file mode 100644
index 000000000..f0b20032f
--- /dev/null
+++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UInsert.cs
@@ -0,0 +1,69 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OrmTest
+{
+ public partial class NewUnitTest
+ {
+ public static void Insert()
+ {
+ var db = Db;
+ db.CodeFirst.InitTables();
+ db.Insertable(new List
+ {
+ new UinitBlukTable(){ Id=1,Create=DateTime.Now, Name="00" },
+ new UinitBlukTable(){ Id=2,Create=DateTime.Now, Name="11" }
+
+ }).UseSqlServer().ExecuteBlueCopy();
+ var dt = db.Queryable().ToDataTable();
+ dt.Rows[0][0] = 3;
+ dt.Rows[1][0] = 4;
+ dt.TableName = "[UinitBlukTable]";
+ db.Insertable(dt).UseSqlServer().ExecuteBlueCopy();
+ db.Insertable(new List
+ {
+ new UinitBlukTable2(){ Id=5, Name="55" },
+ new UinitBlukTable2(){ Id=6, Name="66" }
+
+ }).UseSqlServer().ExecuteBlueCopy();
+ db.Ado.BeginTran();
+ db.Insertable(new List
+ {
+ new UinitBlukTable2(){ Id=7, Name="77" },
+ new UinitBlukTable2(){ Id=8, Name="88" }
+
+ }).UseSqlServer().ExecuteBlueCopy();
+ var task= db.Insertable(new List
+ {
+ new UinitBlukTable2(){ Id=9, Name="9" },
+ new UinitBlukTable2(){ Id=10, Name="10" }
+
+ }).UseSqlServer().ExecuteBlueCopyAsync();
+ task.Wait();
+ db.Ado.CommitTran();
+ var list = db.Queryable().ToList();
+ db.DbMaintenance.TruncateTable();
+ if (string.Join("", list.Select(it => it.Id)) != "12345678910")
+ {
+ throw new Exception("Unit Insert");
+ }
+ }
+ public class UinitBlukTable
+ {
+ public int Id { get; set; }
+ public string Name { get; set; }
+ [SqlSugar.SugarColumn(IsNullable =true)]
+ public DateTime? Create { get; set; }
+ }
+ [SqlSugar.SugarTable("UinitBlukTable")]
+ public class UinitBlukTable2
+ {
+ public string Name { get; set; }
+ public int Id { get; set; }
+ }
+
+ }
+}
diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable.cs
index d59fb4b45..cfc75830a 100644
--- a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable.cs
+++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable.cs
@@ -54,7 +54,7 @@ namespace OrmTest
UValidate.Check(sql, "SELECT [Name],[Price],[CreateTime],[CustomId] FROM [Order] ", "Queryable");
var cts = IEnumerbleContains.Data();
- var list2=Db.Queryable()
+ var list2 = Db.Queryable()
.Where(p => /*ids.*/cts.Select(c => c.Id).Contains(p.Id)).ToList();
var cts2 = IEnumerbleContains.Data().ToList(); ;
@@ -81,42 +81,157 @@ namespace OrmTest
}, o => o.OrderSn == saleOrderInfo.OrderSn && o.OrderStatus != 1);
var ids = Enumerable.Range(1, 11).ToList();
- var list8=Db.Queryable().Where(it => SqlFunc.ContainsArrayUseSqlParameters(ids, it.Id)).ToList();
+ var list8 = Db.Queryable().Where(it => SqlFunc.ContainsArrayUseSqlParameters(ids, it.Id)).ToList();
var result2 = Db.Queryable().Where(o => o.XH == UserLoginInfo.XH).Select(o => o.XH).ToSql();
var x = Db.Queryable().Select(it => new BoolTest2()
{
- a =it.a
+ a = it.a
}).ToSql();
UValidate.Check(x.Key, "SELECT [a] AS [a] FROM [BoolTest1] ", "Queryable");
x = Db.Queryable().Select(it => new BoolTest1()
{
- a = it.a.Value
+ a = it.a.Value
}).ToSql();
UValidate.Check(x.Key, "SELECT [a] AS [a] FROM [BoolTest2] ", "Queryable");
- Db.CodeFirst.InitTables();
-
- Db.Queryable().Select(it =>
-
- new UnitDecimal2
+ var db = Db;
+ db.CodeFirst.InitTables();
+ db.Deleteable().ExecuteCommand();
+ db.Deleteable().ExecuteCommand();
+ db.Insertable(new UserInfo()
{
- x1 = it.x1 * it.x2
+ Id = 1,
+ Password = "123",
+ UserName = "admin"
+ }).ExecuteCommand();
+ db.Insertable(new UserIpRuleInfo()
+ {
+ Addtime = DateTime.Now,
+ UserName = "a",
+ Id = 11,
+ UserId = 1,
+ Description = "xx",
+ IpRange = "1",
+ RuleType = 1
+ }).ExecuteCommand();
+ var vmList = db.Queryable(
+ (m1, m2) => m1.Id == m2.UserId
+ ).Where((m1, m2) => m1.Id > 0).Select((m1, m2) => new UserIpRuleInfo()
+ {
+
+ IpRange = m2.IpRange,
+ Addtime = m2.Addtime,
+ RuleType = m2.RuleType,
+ }).ToList();
+ if (string.IsNullOrEmpty(vmList.First().IpRange))
+ {
+ throw new Exception("Queryable");
+ }
+
+ Db.Insertable(new Order() { CreateTime=DateTime.Now, CustomId=1, Name="a",Price=1 }).ExecuteCommand();
+ var sa = Db.SqlQueryable("SELECT * FroM [ORDER] where id in (@id) ");
+ sa.AddParameters(new List() {
+ new SugarParameter("id",new int[]{ 1})
+ });
+ int i = 0;
+ var salist= sa.ToPageList(1,2,ref i);
+
+ db.CodeFirst.InitTables();
+ db.Insertable(new UnitBytes11() { bytes = null, name = "a" }).ExecuteCommand();
+ db.Insertable(new UnitBytes11() { bytes=new byte[] { 1,2} , name="a"}).ExecuteCommand();
+ var bytes = db.Queryable().Select(it => new
+ {
+ b = it.bytes,
+ name="a"
}).ToList();
}
-
- public class UnitDecimal
+
+ public class UnitBytes11
{
- public decimal x1 { get; set; }
- public decimal x2 { get; set; }
- }
- public class UnitDecimal2 {
- public decimal? x1 { get; set; }
+ [SugarColumn(Length =200,IsNullable =true)]
+ public byte[] bytes { get; set; }
+ public string name{ get; set; }
}
+ ///
+ ///
+ ///
+ [Serializable]
+ [SugarTable("users")]
+ public class UserInfo
+ {
+ ///
+ ///
+ ///
+ public int Id { get; set; }
+
+ ///
+ ///
+ ///
+
+ public string UserName { get; set; }
+
+ ///
+ ///
+ ///
+ public string Password { get; set; }
+
+ }
+ ///
+ ///
+ ///
+ [Serializable]
+ [SugarTable("user_ip_rules")]
+ public class UserIpRuleInfo
+ {
+ ///
+ /// 自增Id
+ ///
+ public int Id { get; set; }
+
+
+ ///
+ /// 用户Id
+ ///
+ [SugarColumn(ColumnName = "user_id")]
+ public int UserId { get; set; }
+
+ ///
+ /// 用户名
+ ///
+ [SugarColumn(IsIgnore = true)]
+ public string UserName { get; set; }
+
+ ///
+ /// IP地址或范围
+ ///
+ [SugarColumn(ColumnName = "ip_range")]
+ public string IpRange { get; set; }
+
+
+ ///
+ /// 规则类型 0-黑名单 1-白名单
+ ///
+ [SugarColumn(ColumnName = "rule_type")]
+ public int RuleType { get; set; }
+
+
+ ///
+ /// 描述/备注
+ ///
+ public string Description { get; set; }
+
+
+ ///
+ /// 添加时间
+ ///
+ public DateTime Addtime { get; set; }
+
+ }
///
/// 系统用户表实体模型类
///
diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable2.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable2.cs
new file mode 100644
index 000000000..769b68afb
--- /dev/null
+++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable2.cs
@@ -0,0 +1,83 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OrmTest
+{
+ public partial class NewUnitTest
+ {
+ public static void Queryable2()
+ {
+ var list4 = Db.Queryable()
+ .Mapper(it => it.A, it => it.AId)
+ .Where(it => it.A.Name == "a")
+ .ToList();
+
+
+ var list5 = Db.Queryable()
+ .Mapper(it => it.A, it => it.AId, it => it.A.Id)
+ .Where(it => it.A.Name == "a")
+ .ToList();
+
+
+ var list3 = Db.Queryable()
+ .Mapper(it => it.Items, it => it.Items.First().OrderId)
+ .Where(it => it.Items.Count() > 0)
+ .ToList();
+
+ var list6 = Db.Queryable()
+ .Mapper(it => it.Items, it => it.Items.First().OrderId)
+ .Where(it => it.Items.Any())
+ .ToList();
+
+
+ var sql=Db.Queryable().AS("[order]").ToList();
+
+ var sql1 = Db.Queryable((o, i, c) => new JoinQueryInfos(
+ JoinType.Left, o.Id == i.OrderId,
+ JoinType.Left, c.Id == o.CustomId
+ ))
+ .AS("[aa]")
+ .AS("[xx]")
+ .AS("[yy]")
+ .Select().ToSql().Key;
+ if (!sql1.Contains("[aa]") || !sql1.Contains("[xx]") || !sql1.Contains("[yy]"))
+ {
+ throw new Exception("unit queryable2 ");
+ }
+ var sql2 = Db.Queryable().AS("[zz]").ToSql().Key;
+ if (sql2 != "SELECT [ItemId],[OrderId],[Price],[CreateTime] FROM [zz] ")
+ {
+ throw new Exception("unit queryable2 ");
+ }
+ Db.Queryable((o, i, c) => new JoinQueryInfos(
+ JoinType.Left, o.Id == i.OrderId,
+ JoinType.Left, c.Id == o.CustomId
+ ))
+ .AS("[order]")
+ .AS("[orderdetail]")
+ .AS("[custom]")
+ .Select().ToList();
+
+ Db.Queryable