Update demo

This commit is contained in:
skx 2020-11-15 00:39:23 +08:00
parent 595bac9423
commit b1be604dc2
10 changed files with 569 additions and 19 deletions

View File

@ -30,7 +30,7 @@ namespace OrmTest
Console.WriteLine("#### Examples Start ####");
var db = GetInstance();
var dbTime = db.GetDate();
var getAll = db.Queryable<Order>().ToList();
var getAll = db.Queryable<Order>().Where(it=> SqlFunc.EqualsNull(it.Name,null)).ToList();
var getOrderBy = db.Queryable<Order>().OrderBy(it => it.Name,OrderByType.Desc).ToList();
var getOrderBy2 = db.Queryable<Order>().OrderBy(it => it.Id).OrderBy(it => it.Name, OrderByType.Desc).ToList();
var getOrderBy3 = db.Queryable<Order>().OrderBy(it =>new { it.Name,it.Id}).ToList();
@ -124,6 +124,11 @@ namespace OrmTest
Console.WriteLine("#### SqlFunc Start ####");
var db = GetInstance();
var index= db.Queryable<Order>().Select(it => SqlFunc.CharIndex("a", "cccacc")).First();
var list = db.Queryable<Order>().Select(it =>new ViewOrder()
{
Id = SqlFunc.AggregateSum(SqlFunc.IF(it.Id > 0).Return(1).End(0))
}).ToList();
Console.WriteLine("#### SqlFunc End ####");
}
@ -153,6 +158,11 @@ namespace OrmTest
//Child=(select * from parent where ParentId=it.id)
.Mapper(it => it.Child, it => it.Id, it => it.Parent.ParentId)
.ToList();
db.Insertable(new Tree() { Id = 222, Name = "child11", ParentId = 11 }).ExecuteCommand();
var tree = db.Queryable<Tree>().ToTree(it=>it.Child,it=>it.ParentId,0);
//one to one
var list2 = db.Queryable<OrderItemInfo>().Mapper(it => it.Order, it => it.OrderId).ToList();
@ -222,6 +232,12 @@ namespace OrmTest
var query2 = db.Queryable<Custom>();
var list3=db.Queryable(query1, query2,JoinType.Left, (p1, p2) => p1.CustomId == p2.Id).Select<ViewOrder>().ToList();
var query3 = db.Union(
db.Queryable<Order>().Where(it => it.Name.Contains("a")),
db.Queryable<Order>().Where(it => it.Name.Contains("b"))
).ToList();
Console.WriteLine("#### Join Table End ####");
}

View File

@ -30,8 +30,8 @@ namespace OrmTest
}
});
var insertObj = new Order() { Id = 1, Name = "order1",Price=0 };
var updateObjs = new List<Order> {
var insertObj = new Order() { Id = 1, Name = "order1", Price = 0 };
var insertObjs = new List<Order> {
new Order() { Id = 11, Name = "order11", Price=0 },
new Order() { Id = 12, Name = "order12" , Price=0}
};
@ -45,12 +45,269 @@ namespace OrmTest
db.Insertable(insertObj).InsertColumns("Name", "Price").ExecuteReturnIdentity();
//ignore null columns
db.Insertable(updateObjs).ExecuteCommand();//get change row count
db.Insertable(insertObjs).ExecuteCommand();//get change row count
//Use Lock
db.Insertable(insertObj).With(SqlWith.UpdLock).ExecuteCommand();
insertObjs = new List<Order> {
new Order() { Id = 11, Name = "order11", Price=1 },
new Order() { Id = 12, Name = "order12" , Price=20, CreateTime=DateTime.Now, CustomId=1}
};
db.Insertable(insertObjs).UseSqlServer().ExecuteBlueCopy();
db.CodeFirst.InitTables<RootTable0, TwoItem, TwoItem2, TwoItem3>();
db.CodeFirst.InitTables<ThreeItem2>();
db.DbMaintenance.TruncateTable("RootTable0");
db.DbMaintenance.TruncateTable("TwoItem");
db.DbMaintenance.TruncateTable("TwoItem2");
db.DbMaintenance.TruncateTable("TwoItem3");
db.DbMaintenance.TruncateTable("ThreeItem2");
Console.WriteLine("SubInsert Start");
db.Insertable(new Order()
{
Name = "订单 1",
CustomId = 1,
Price = 100,
CreateTime = DateTime.Now,
Id = 0,
Items = new List<OrderItem>() {
new OrderItem(){
CreateTime=DateTime.Now,
OrderId=0,
Price=1,
ItemId=1
},
new OrderItem(){
CreateTime=DateTime.Now,
OrderId=0,
Price=2,
ItemId=2
}
}
})
.AddSubList(it => it.Items.First().OrderId).ExecuteReturnPrimaryKey();
db.Insertable(new List<RootTable0>() {
new RootTable0()
{
Name="aa",
TwoItem2=new TwoItem2() {
Id="1",
ThreeItem2=new List<ThreeItem2>(){
new ThreeItem2(){ Name="a", TwoItem2Id="1" },
new ThreeItem2(){ Id=2, Name="a2", TwoItem2Id="2" }
}
},
TwoItem=new TwoItem()
{
Name ="itema" ,
RootId=2
},
TwoItem3=new List<TwoItem3>(){
new TwoItem3(){ Id=0, Name="a",Desc="" },
}
},
new RootTable0()
{
Name="bb",
TwoItem2=new TwoItem2() {
Id="2"
},
TwoItem=new TwoItem()
{
Name ="itemb" ,
RootId=2,
},
TwoItem3=new List<TwoItem3>(){
new TwoItem3(){ Id=1, Name="b",Desc="" },
new TwoItem3(){ Id=2, Name="b1",Desc="1" },
}
}
})
.AddSubList(it => it.TwoItem.RootId)
.AddSubList(it => new SubInsertTree()
{
Expression = it.TwoItem2.RootId,
ChildExpression = new List<SubInsertTree>() {
new SubInsertTree(){
Expression=it.TwoItem2.ThreeItem2.First().TwoItem2Id
}
}
})
.AddSubList(it => it.TwoItem3)
.ExecuteReturnPrimaryKey();
SubNoIdentity(db);
SubIdentity(db);
Console.WriteLine("#### Insertable End ####");
}
private static void SubNoIdentity(SqlSugarClient db)
{
db.CodeFirst.InitTables<Country, Province, City>();
db.DbMaintenance.TruncateTable("Country");
db.DbMaintenance.TruncateTable("Province");
db.DbMaintenance.TruncateTable("City");
db.Insertable(new List<Country>()
{
new Country(){
Id=1,
Name="中国",
Provinces=new List<Province>(){
new Province{
Id=1001,
Name="江苏",
citys=new List<City>(){
new City(){ Id=1001001, Name="南通" },
new City(){ Id=1001002, Name="南京" }
}
},
new Province{
Id=1002,
Name="上海",
citys=new List<City>(){
new City(){ Id=1002001, Name="徐汇" },
new City(){ Id=1002002, Name="普陀" }
}
},
new Province{
Id=1003,
Name="北京",
citys=new List<City>(){
new City(){ Id=1003001, Name="北京A" },
new City(){ Id=1003002, Name="北京B" }
}
}
}
},
new Country(){
Name="美国",
Id=2,
Provinces=new List<Province>()
{
new Province(){
Name="美国小A",
Id=20001
},
new Province(){
Name="美国小b",
Id=20002
}
}
},
new Country(){
Name="英国",
Id=3
}
})
.AddSubList(it => new SubInsertTree()
{
Expression = it.Provinces.First().CountryId,
ChildExpression = new List<SubInsertTree>() {
new SubInsertTree(){
Expression=it.Provinces.First().citys.First().ProvinceId
}
}
})
.ExecuteReturnPrimaryKey();
var list = db.Queryable<Country>()
.Mapper(it => it.Provinces, it => it.Provinces.First().CountryId)
.Mapper(it =>
{
foreach (var item in it.Provinces)
{
item.citys = db.Queryable<City>().Where(y => y.ProvinceId == item.Id).ToList();
}
})
.ToList();
}
private static void SubIdentity(SqlSugarClient db)
{
db.CodeFirst.InitTables<Country1, Province1, City1>();
db.DbMaintenance.TruncateTable("Country1");
db.DbMaintenance.TruncateTable("Province1");
db.DbMaintenance.TruncateTable("City1");
db.Insertable(new List<Country1>()
{
new Country1(){
Id=1,
Name="中国",
Provinces=new List<Province1>(){
new Province1{
Id=1001,
Name="江苏",
citys=new List<City1>(){
new City1(){ Id=1001001, Name="南通" },
new City1(){ Id=1001002, Name="南京" }
}
},
new Province1{
Id=1002,
Name="上海",
citys=new List<City1>(){
new City1(){ Id=1002001, Name="徐汇" },
new City1(){ Id=1002002, Name="普陀" }
}
},
new Province1{
Id=1003,
Name="北京",
citys=new List<City1>(){
new City1(){ Id=1003001, Name="北京A" },
new City1(){ Id=1003002, Name="北京B" }
}
}
}
},
new Country1(){
Name="美国",
Id=2,
Provinces=new List<Province1>()
{
new Province1(){
Name="美国小A",
Id=20001
},
new Province1(){
Name="美国小b",
Id=20002
}
}
},
new Country1(){
Name="英国",
Id=3
}
})
.AddSubList(it => new SubInsertTree()
{
Expression = it.Provinces.First().CountryId,
ChildExpression = new List<SubInsertTree>() {
new SubInsertTree(){
Expression=it.Provinces.First().citys.First().ProvinceId
}
}
})
.ExecuteReturnPrimaryKey();
var list = db.Queryable<Country1>()
.Mapper(it => it.Provinces, it => it.Provinces.First().CountryId)
.Mapper(it =>
{
foreach (var item in it.Provinces)
{
item.citys = db.Queryable<City1>().Where(y => y.ProvinceId == item.Id).ToList();
}
})
.ToList();
}
}
}

View File

@ -38,12 +38,28 @@ namespace OrmTest
//sql
var dt2 = db.Ado.GetDataTable("select * from [order] where @id>0 or name=@name", new { id = 1, name = "2" });
//Stored Procedure
//var dt3 = db.Ado.UseStoredProcedure().GetDataTable("sp_school", new { name = "张三", age = 0 });
//var nameP = new SugarParameter("@name", "张三");
//var ageP = new SugarParameter("@age", null, true);//isOutput=true
//var dt4 = db.Ado.UseStoredProcedure().GetDataTable("sp_school", nameP, ageP);
//create sp
db.Ado.ExecuteCommand(@"
if object_id('up_user') is not null
drop proc up_user;");
db.Ado.ExecuteCommand(@"
create proc up_user
@id int,
@name varchar(10) ='' output
as
begin
set @name='abc'
select @id as id
end
");
//get output
var dt3 = db.Ado.UseStoredProcedure().GetDataTable("up_user", new { name = "张三", id = 0 });
var IdP = new SugarParameter("@id", 1);
var NameP = new SugarParameter("@name", null, true);//isOutput=true
var dt4 = db.Ado.UseStoredProcedure().GetDataTable("up_user", IdP, NameP);
var outputValue = NameP.Value;
//There are many methods to under db.ado

View File

@ -65,7 +65,7 @@ namespace OrmTest
}
db.DbFirst.IsCreateAttribute().CreateClassFile("c:\\Demo\\8", "Models");
db.DbFirst.WhereColumns(it => it.ToUpper()!="ID").CreateClassFile("c:\\Demo\\9", "Models");
//Use Razor Template
//db.DbFirst.UseRazorAnalysis(RazorFirst.DefaultRazorClassTemplate).CreateClassFile("");

View File

@ -0,0 +1,108 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OrmTest
{
public class RootTable0
{
[SqlSugar.SugarColumn(IsPrimaryKey =true,IsIdentity =true)]
public int Id { get; set; }
public string Name { get; set; }
[SqlSugar.SugarColumn(IsIgnore =true)]
public TwoItem TwoItem { get; set; }
[SqlSugar.SugarColumn(IsIgnore = true)]
public TwoItem2 TwoItem2 { get; set; }
[SqlSugar.SugarColumn(IsIgnore = true)]
public List<TwoItem3> TwoItem3 { get; set; }
}
public class TwoItem
{
[SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
public int RootId { get; set; }
public string Name { get; set; }
}
public class TwoItem2
{
[SqlSugar.SugarColumn(IsPrimaryKey = true)]
public string Id { get; set; }
public int RootId { get; set; }
[SqlSugar.SugarColumn(IsIgnore =true)]
public List<ThreeItem2> ThreeItem2 { get; set; }
}
public class TwoItem3
{
[SqlSugar.SugarColumn(IsPrimaryKey = true)]
public int Id { get; set; }
public string Name { get; set; }
public string Desc { get; set; }
}
public class ThreeItem2
{
[SqlSugar.SugarColumn(IsPrimaryKey = true)]
public int Id { get; set; }
public string Name { get; set; }
public string TwoItem2Id { get; set; }
}
public class Country
{
[SqlSugar.SugarColumn(IsPrimaryKey = true)]
public int Id { get; set; }
public string Name { get; set; }
[SqlSugar.SugarColumn(IsIgnore = true)]
public List<Province> Provinces { get; set; }
}
public class Province
{
[SqlSugar.SugarColumn(IsPrimaryKey =true)]
public int Id { get; set; }
public string Name { get; set; }
public int CountryId { get; set; }
[SqlSugar.SugarColumn(IsIgnore = true)]
public List<City> citys { get; set; }
}
public class City
{
[SqlSugar.SugarColumn(IsPrimaryKey = true)]
public int Id { get; set; }
public int ProvinceId { get; set; }
public string Name { get; set; }
}
public class Country1
{
[SqlSugar.SugarColumn(IsPrimaryKey = true,IsIdentity =true)]
public int Id { get; set; }
public string Name { get; set; }
[SqlSugar.SugarColumn(IsIgnore = true)]
public List<Province1> Provinces { get; set; }
}
public class Province1
{
[SqlSugar.SugarColumn(IsPrimaryKey = true,IsIdentity =true)]
public int Id { get; set; }
public string Name { get; set; }
public int CountryId { get; set; }
[SqlSugar.SugarColumn(IsIgnore = true)]
public List<City1> citys { get; set; }
}
public class City1
{
[SqlSugar.SugarColumn(IsPrimaryKey = true,IsIdentity =true)]
public int Id { get; set; }
public int ProvinceId { get; set; }
public string Name { get; set; }
}
}

View File

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

View File

@ -9,6 +9,7 @@ namespace OrmTest
{
public partial class NewUnitTest
{
public static Unit_SYS_USER UserLoginInfo => new Unit_SYS_USER() { XH = "10010" };
public static void Queryable()
{
@ -78,8 +79,58 @@ namespace OrmTest
CheckMan = saleOrderInfo.CheckMan,
CheckTime = DateTime.Now
}, 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 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
}).ToSql();
UValidate.Check(x.Key, "SELECT [a] AS [a] FROM [BoolTest1] ", "Queryable");
x = Db.Queryable<BoolTest2>().Select(it => new BoolTest1()
{
a = it.a.Value
}).ToSql();
UValidate.Check(x.Key, "SELECT [a] AS [a] FROM [BoolTest2] ", "Queryable");
}
/// <summary>
/// 系统用户表实体模型类
/// </summary>
[SugarTable("Unit_SYS_USER")]
public class Unit_SYS_USER
{
/// <summary>
/// 序号
/// </summary>
private string _XH;
/// <summary>
/// 序号【主键唯一标识,自动生成】
/// </summary>
[SugarColumn(ColumnName = "XH",
ColumnDataType = "VARCHAR2",
IsPrimaryKey = true,
IsNullable = false,
Length = 50,
ColumnDescription = "序号【主键唯一标识,自动生成】")]
public string XH
{
get
{
return _XH;
}
set
{
_XH = value;
}
}
}
public static class IEnumerbleContains
{
public static IEnumerable<Order> Data()
@ -320,4 +371,18 @@ namespace OrmTest
public Guid? Id { get; set; }
}
}
internal class BoolTest1
{
public BoolTest1()
{
}
public bool a { get; set; }
}
public class BoolTest2
{
public bool? a { get; set; }
}
}

View File

@ -0,0 +1,41 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OrmTest
{
public partial class NewUnitTest
{
public static void Queue()
{
test1();
test2();
}
private static void test2()
{
var db = Db;
db.AddQueue("select 11");
db.Queryable<Order>().Where(it => false).AddQueue();
db.AddQueue("select 12");
var list = db.SaveQueuesAsync<int, Order, int>();
list.Wait();
UValidate.Check(list.Result.Item1[0], "11", "Queue");
UValidate.Check(list.Result.Item2.Count(), 0, "Queue");
UValidate.Check(list.Result.Item3[0], "12", "Queue");
}
private static void test1()
{
var db = Db;
db.AddQueue("select 11");
db.Queryable<Order>().Where(it => false).AddQueue();
db.AddQueue("select 12");
var list = db.SaveQueues<int, Order, int>();
UValidate.Check(list.Item1[0], "11", "Queue");
UValidate.Check(list.Item2.Count(), 0, "Queue");
UValidate.Check(list.Item3[0], "12", "Queue");
}
}
}

View File

@ -309,8 +309,8 @@ namespace OrmTest
{
for (int i = 0; i < 100; i++)
{
singleDb.Insertable(new Order() { Name = "test", CreateTime = DateTime.Now }).ExecuteCommandAsync().Wait();
System.Threading.Thread.Sleep(1);
//singleDb.Insertable(new Order() { Name = "test", CreateTime = DateTime.Now }).ExecuteCommandAsync().Wait();
//System.Threading.Thread.Sleep(1); No Support
}
});
@ -318,8 +318,8 @@ namespace OrmTest
{
for (int i = 0; i < 100; i++)
{
singleDb.Insertable(new Order() { Name = "test2", CreateTime = DateTime.Now }).ExecuteCommandAsync().Wait();
System.Threading.Thread.Sleep(10);
//singleDb.Insertable(new Order() { Name = "test2", CreateTime = DateTime.Now }).ExecuteCommandAsync().Wait();
//System.Threading.Thread.Sleep(10); No Support
}
});
@ -327,8 +327,8 @@ namespace OrmTest
{
for (int i = 0; i < 100; i++)
{
singleDb.Insertable(new Order() { Name = "test3", CreateTime = DateTime.Now }).ExecuteCommandAsync().Wait();
System.Threading.Thread.Sleep(6);
//singleDb.Insertable(new Order() { Name = "test3", CreateTime = DateTime.Now }).ExecuteCommandAsync().Wait();
//System.Threading.Thread.Sleep(6); No Support
}
});

View File

@ -54,8 +54,54 @@ namespace OrmTest
UValidate.Check(sql.Key, @"UPDATE [Diary] SET
[TypeID] = @Const0 WHERE ( [ID] = @ID1 )", "Updateable");
sql = Db.Updateable<UnitDiary>().SetColumns(it => new UnitDiary()
{
TypeID = saveDiary.TypeID,
}).Where(it => it.ID == saveDiary.ID).ToSql();
UValidate.Check(sql.Key, @"UPDATE [Diary] SET
[TypeID] = @Const0 WHERE ( [ID] = @ID1 )", "Updateable");
sql=Db.Updateable<NullTest>().SetColumns(it => new NullTest()
{
p = true
}).Where(it => it.id == 1).ToSql();
UValidate.Check(sql.Key, @"UPDATE [NullTest] SET
[p] = @Const0 WHERE ( [id] = @id1 )", "Updateable");
sql = Db.Updateable<NullTest>().SetColumns(it => new NullTest()
{
p2 = true
}).Where(it => it.id == 1).ToSql();
UValidate.Check(sql.Key, @"UPDATE [NullTest] SET
[p2] = @Const0 WHERE ( [id] = @id1 )", "Updateable");
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();
Db.Updateable<Order>()
.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();
}
}
public class NullTest
{
public int id { get; set; }
public bool? p { get; set; }
public bool p2 { get; set; }
}
public class UnitSaveDiary
{
public int ID { get; set; }