Update demo

This commit is contained in:
skx 2021-01-18 00:54:51 +08:00
parent 019a919f44
commit 1ef6ce503e
9 changed files with 465 additions and 28 deletions

View File

@ -9,4 +9,8 @@
<ProjectReference Include="..\SqlSugar\SqlSugar.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="UnitTest\models\" />
</ItemGroup>
</Project>

View File

@ -31,12 +31,15 @@ namespace OrmTest
}
public static void Init()
{
Tran();
Insert();
Queue();
CodeFirst();
Updateable();
Json();
Ado();
Queryable();
Queryable2();
QueryableAsync();
//Thread();
//Thread2();

View File

@ -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<int>();
//var result = await context.Queryable<Order, User, Department>((o, u, d) => new JoinQueryInfos
var result = await context.Queryable<Order2, User2>((o, u) => new JoinQueryInfos
(
JoinType.Left, o.UserId == u.Id
//,JoinType.Left, u.DepartmentId == d.Id
))
.AS<Order2>("dbo.UnitOrder")
.AS<User2>("test1111.dbo.UnitUser")
//.AS<Department>("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<User2>().Where(t => t.Id == 1).Count() == 0)
context1.Insertable(new User2() { Id = 1, Name = "TestUser", DepartmentId = 1 }).ExecuteCommand();
if (context1.Queryable<Department2>().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<User2>().Where(t => t.Id == 1).Count() == 0)
context2.Insertable(new Order2() { Id = 1, Name = "Order", UserId = 1 }).ExecuteCommand();
}
}
}

View File

@ -10,9 +10,19 @@ namespace OrmTest
{
public static void CodeFirst()
{
Db.CodeFirst.InitTables<UnitCodeFirstpks2>();
if (Db.DbMaintenance.IsAnyTable("UnitCodeTest1", false))
Db.DbMaintenance.DropTable("UnitCodeTest1");
Db.CodeFirst.InitTables<UnitCodeTest1>();
Db.CodeFirst.InitTables<UnitCodeFirstpks2>();
}
public class UnitCodeFirstpks2
{
[SqlSugar.SugarColumn(IsPrimaryKey =true)]
public string id { get; set; }
[SqlSugar.SugarColumn(IsPrimaryKey = true)]
public string id2 { get; set; }
}
public class UnitCodeTest1
{

View File

@ -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<UinitBlukTable>();
db.Insertable(new List<UinitBlukTable>
{
new UinitBlukTable(){ Id=1,Create=DateTime.Now, Name="00" },
new UinitBlukTable(){ Id=2,Create=DateTime.Now, Name="11" }
}).UseSqlServer().ExecuteBlueCopy();
var dt = db.Queryable<UinitBlukTable>().ToDataTable();
dt.Rows[0][0] = 3;
dt.Rows[1][0] = 4;
dt.TableName = "[UinitBlukTable]";
db.Insertable(dt).UseSqlServer().ExecuteBlueCopy();
db.Insertable(new List<UinitBlukTable2>
{
new UinitBlukTable2(){ Id=5, Name="55" },
new UinitBlukTable2(){ Id=6, Name="66" }
}).UseSqlServer().ExecuteBlueCopy();
db.Ado.BeginTran();
db.Insertable(new List<UinitBlukTable2>
{
new UinitBlukTable2(){ Id=7, Name="77" },
new UinitBlukTable2(){ Id=8, Name="88" }
}).UseSqlServer().ExecuteBlueCopy();
var task= db.Insertable(new List<UinitBlukTable2>
{
new UinitBlukTable2(){ Id=9, Name="9" },
new UinitBlukTable2(){ Id=10, Name="10" }
}).UseSqlServer().ExecuteBlueCopyAsync();
task.Wait();
db.Ado.CommitTran();
var list = db.Queryable<UinitBlukTable>().ToList();
db.DbMaintenance.TruncateTable<UinitBlukTable>();
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; }
}
}
}

View File

@ -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<Order>()
var list2 = Db.Queryable<Order>()
.Where(p => /*ids.*/cts.Select(c => c.Id).Contains(p.Id)).ToList();
var cts2 = IEnumerbleContains.Data().ToList(); ;
@ -81,13 +81,13 @@ namespace OrmTest
}, o => o.OrderSn == saleOrderInfo.OrderSn && o.OrderStatus != 1);
var ids = Enumerable.Range(1, 11).ToList();
var list8=Db.Queryable<Order>().Where(it => SqlFunc.ContainsArrayUseSqlParameters(ids, it.Id)).ToList();
var list8 = Db.Queryable<Order>().Where(it => SqlFunc.ContainsArrayUseSqlParameters(ids, it.Id)).ToList();
var result2 = Db.Queryable<Unit_SYS_USER>().Where(o => o.XH == UserLoginInfo.XH).Select(o => o.XH).ToSql();
var x = Db.Queryable<BoolTest1>().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<BoolTest2>().Select(it => new BoolTest1()
@ -96,27 +96,142 @@ namespace OrmTest
}).ToSql();
UValidate.Check(x.Key, "SELECT [a] AS [a] FROM [BoolTest2] ", "Queryable");
Db.CodeFirst.InitTables<UnitDecimal>();
Db.Queryable<UnitDecimal>().Select(it =>
new UnitDecimal2
var db = Db;
db.CodeFirst.InitTables<UserInfo, UserIpRuleInfo>();
db.Deleteable<UserInfo>().ExecuteCommand();
db.Deleteable<UserIpRuleInfo>().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<UserInfo, UserIpRuleInfo>(
(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<Order>("SELECT * FroM [ORDER] where id in (@id) ");
sa.AddParameters(new List<SugarParameter>() {
new SugarParameter("id",new int[]{ 1})
});
int i = 0;
var salist= sa.ToPageList(1,2,ref i);
db.CodeFirst.InitTables<UnitBytes11>();
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<UnitBytes11>().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; }
}
/// <summary>
///
/// </summary>
[Serializable]
[SugarTable("users")]
public class UserInfo
{
/// <summary>
///
/// </summary>
public int Id { get; set; }
/// <summary>
///
/// </summary>
public string UserName { get; set; }
/// <summary>
///
/// </summary>
public string Password { get; set; }
}
/// <summary>
///
///</summary>
[Serializable]
[SugarTable("user_ip_rules")]
public class UserIpRuleInfo
{
/// <summary>
/// 自增Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 用户Id
/// </summary>
[SugarColumn(ColumnName = "user_id")]
public int UserId { get; set; }
/// <summary>
/// 用户名
/// </summary>
[SugarColumn(IsIgnore = true)]
public string UserName { get; set; }
/// <summary>
/// IP地址或范围
/// </summary>
[SugarColumn(ColumnName = "ip_range")]
public string IpRange { get; set; }
/// <summary>
/// 规则类型 0-黑名单 1-白名单
/// </summary>
[SugarColumn(ColumnName = "rule_type")]
public int RuleType { get; set; }
/// <summary>
/// 描述/备注
/// </summary>
public string Description { get; set; }
/// <summary>
/// 添加时间
/// </summary>
public DateTime Addtime { get; set; }
}
/// <summary>
/// 系统用户表实体模型类
/// </summary>

View File

@ -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<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();
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();
var sql=Db.Queryable<Order>().AS("[order]").ToList();
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();
var qu1=Db.Queryable<Order>().Select(it => new
{
id = it.Id
}).MergeTable().Select<Order>();
var qu2 = Db.Queryable<Order>().Select(it => new
{
id = it.Id,
name=it.Name
}).MergeTable().Select<Order>();
var list=Db.Queryable(qu1, qu2,JoinType.Left, (x, y) => x.Id == y.Id).Select((x,y) => new
{
id1=x.Id,
name=y.Name
}).ToList();
}
}
}

View File

@ -0,0 +1,34 @@
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 Tran()
{
var db = Db;
int oldCount = GetCount(db);
Console.WriteLine(oldCount);
db.BeginTran();
db.Deleteable<Order>().ExecuteCommand();
Console.WriteLine(GetCount(db));
db.RollbackTran();
int newCount = GetCount(db);
Console.WriteLine(newCount);
if (newCount != oldCount)
{
throw new Exception("NewUnitTest Tran ");
}
}
private static int GetCount(SqlSugar.SqlSugarClient db)
{
return db.Queryable<Order>().Count();
}
}
}

View File

@ -13,12 +13,12 @@ namespace OrmTest
{
Db.CodeFirst.InitTables(typeof(UnitUser));
Db.DbMaintenance.TruncateTable<UnitUser>();
Db.Insertable(new UnitUser() { USER_ID=1,USER_ACCOUNT = "a", USER_PWD = "b", USER_NAME = "c", PWD_LASTCHTIME = DateTime.Now, PWD_ERRORCOUNT = 1, PWD_LASTERRTIME = DateTime.Now }).ExecuteCommand();
Db.Updateable(new UnitUser() { USER_ID=1, PWD_LASTERRTIME = null }).WhereColumns(it=> new{ it.PWD_ERRORCOUNT, it.PWD_LASTERRTIME }).ExecuteCommand();
Db.Insertable(new UnitUser() { USER_ID = 1, USER_ACCOUNT = "a", USER_PWD = "b", USER_NAME = "c", PWD_LASTCHTIME = DateTime.Now, PWD_ERRORCOUNT = 1, PWD_LASTERRTIME = DateTime.Now }).ExecuteCommand();
Db.Updateable(new UnitUser() { USER_ID = 1, PWD_LASTERRTIME = null }).WhereColumns(it => new { it.PWD_ERRORCOUNT, it.PWD_LASTERRTIME }).ExecuteCommand();
Db.CodeFirst.InitTables(typeof(UnitBoolTest));
var x = new UnitBoolTest();
Db.Updateable<UnitBoolTest>().SetColumns(it => new UnitBoolTest() { BoolValue = !it.BoolValue }).Where(it=>it.Id==1).ExecuteCommand();
Db.Updateable<UnitBoolTest>().SetColumns(it => it.BoolValue == !it.BoolValue ).Where(it=>it.Id==1).ExecuteCommand();
Db.Updateable<UnitBoolTest>().SetColumns(it => new UnitBoolTest() { BoolValue = !it.BoolValue }).Where(it => it.Id == 1).ExecuteCommand();
Db.Updateable<UnitBoolTest>().SetColumns(it => it.BoolValue == !it.BoolValue).Where(it => it.Id == 1).ExecuteCommand();
Db.Updateable<UnitBoolTest>().SetColumns(it => new UnitBoolTest() { BoolValue = x.BoolValue }).Where(it => it.Id == 1).ExecuteCommand();
Db.Updateable<UnitBoolTest>().SetColumns(it => it.BoolValue == x.BoolValue).Where(it => it.Id == 1).ExecuteCommand();
Db.Updateable<UnitBoolTest>().SetColumns(it => new UnitBoolTest() { BoolValue = !x.BoolValue }).Where(it => it.Id == 1).ExecuteCommand();
@ -26,7 +26,7 @@ namespace OrmTest
Db.Updateable<UnitBoolTest>(x).ReSetValue(it => it.BoolValue == it.BoolValue).ExecuteCommand();
Db.Updateable<UnitBoolTest>(x).ReSetValue(it => it.BoolValue == true).ExecuteCommand();
Db.Updateable<UnitBoolTest>(x).ReSetValue(it => it.BoolValue == !it.BoolValue).ExecuteCommand();
Db.Updateable<UnitBoolTest>(x).UpdateColumns(it =>new { it.BoolValue }) .ExecuteCommand();
Db.Updateable<UnitBoolTest>(x).UpdateColumns(it => new { it.BoolValue }).ExecuteCommand();
@ -62,7 +62,7 @@ namespace OrmTest
UValidate.Check(sql.Key, @"UPDATE [Diary] SET
[TypeID] = @Const0 WHERE ( [ID] = @ID1 )", "Updateable");
sql=Db.Updateable<NullTest>().SetColumns(it => new NullTest()
sql = Db.Updateable<NullTest>().SetColumns(it => new NullTest()
{
p = true
@ -81,20 +81,39 @@ namespace OrmTest
Db.Updateable<Order>()
.SetColumns(it => it.Name == "a")
.SetColumns(it => it.CreateTime == DateTime.Now)
.SetColumns(it=>it.Price==1).Where(it=>it.Id==1).ExecuteCommand();
.SetColumns(it => it.Price == 1).Where(it => it.Id == 1).ExecuteCommand();
Db.Updateable<Order>()
.SetColumns(it =>new Order{ Name="a",CreateTime=DateTime.Now })
.SetColumns(it => it.Price==1).Where(it => it.Id == 1).ExecuteCommand();
.SetColumns(it => new Order { Name = "a", CreateTime = DateTime.Now })
.SetColumns(it => it.Price == 1).Where(it => it.Id == 1).ExecuteCommand();
Db.Updateable<Order>()
.SetColumns(it => new Order { Name = "a", CreateTime = DateTime.Now })
.SetColumns(it => new Order() { Price=1 }).Where(it => it.Id == 1).ExecuteCommand();
.SetColumns(it => new Order() { Price = 1 }).Where(it => it.Id == 1).ExecuteCommand();
Db.Updateable<Order>()
.SetColumns(it => new Order { Name= it.Id>0 ?"1":"2", CreateTime = DateTime.Now })
.Where(it => it.Id == 1).ExecuteCommand();
Db.Updateable<Order>()
.SetColumns(it => new Order { Name = SqlFunc.IsNull(it.Name,"a")+"b", CreateTime = DateTime.Now })
.Where(it => it.Id == 1).ExecuteCommand();
Db.CodeFirst.InitTables<Unitbluecopy>();
Db.Insertable(new Unitbluecopy()).UseSqlServer().ExecuteBlueCopy();
}
}
public class Unitbluecopy
{
public int Id { get; set; }
[SugarColumn(IsNullable =true)]
public decimal? x { get; set; }
}
public class NullTest
{
public int id { get; set; }