开源测试_sqlsugar

发布于:2024-12-08 ⋅ 阅读:(175) ⋅ 点赞:(0)

一、分表测试

程序

using SqlSugar;
var db = new SqlSugarClient(new ConnectionConfig
{
    ConnectionString = "Server=127.0.0.1;Database=test;User ID=sa;Password=123456;Trusted_Connection=False;TrustServerCertificate=True;",
    DbType = DbType.SqlServer,
    IsAutoCloseConnection = true,
});

//创建表
db.CodeFirst.InitTables(typeof(SysUser));

//插入
for (int i = 0; i < 10; i++)
{
   var newUser = new SysUser
   {
       Id = SnowFlakeSingle.instance.NextId(),
       Name = "John Doe",
   };
    db.Insertable(newUser).SplitTable().ExecuteCommand();
}
//读取
var users = db.Queryable<SysUser>().SplitTable(tabs => tabs.Take(3)).ToList();
//
var i = db.MasterQueryable<SysUser>().Where(it => it.Name == "John Doe").SplitTable(tabs => tabs.Take(2)).Select(s => SqlFunc.AggregateDistinctCount(s.Id)).First();

测试表类

using SqlSugar;
[SplitTable(SplitType.Day)]//指定按照时间分表
[SugarTable("UserSplit{year}{month}{day}")]
public class SysUser
{
    /// <summary>
    /// 主键 
    ///</summary>
    [Newtonsoft.Json.JsonConverter(typeof(ValueToStringConverter))]
    [SugarColumn(ColumnName="id" ,IsPrimaryKey = true   )]
        public long Id { get; set; }
    /// <summary>
    /// 卡号 
    ///</summary>
        [SugarColumn(ColumnName="cardNo",IsNullable =true)]
        public string? CardNo { get; set; }
    /// <summary>
    /// 用户名 
    ///</summary>
        [SugarColumn(ColumnName="userNo" , IsNullable = true)]
        public string? UserNo { get; set; }
       
    /// <summary>
    /// 用户名 
    ///</summary>
        [SugarColumn(ColumnName="name")]
        public string? Name { get; set; }

    [SplitField] //分表以当前这个属性  对应的数据库表字段数据为维度来分表
    public DateTime CreateTime { get; set; } = DateTime.Now;
}

二、联表测试

1、User的主键id和Order的Userid匹配(添加了导航属性)
2、User的实体表格没有Orders这个字段

using Newtonsoft.Json;
using SqlSugar;

var db = new SqlSugarClient(new ConnectionConfig
{
    ConnectionString = "Server=127.0.0.1;Database=test;User ID=sa;Password=123456;Trusted_Connection=False;TrustServerCertificate=True;",
    DbType = DbType.SqlServer,
    IsAutoCloseConnection = true,
});

var types = new List<Type>();
types.Add(typeof(User));
types.Add(typeof(Order));
db.CodeFirst.InitTables(types.ToArray());

User user1 = new User() {
    Id = 1,
    Name = "Test"
};
db.Insertable<User>(user1).ExecuteCommand();

Order order = new Order() {
    Id = 2,
    UserId = 1,
    Product = "111",
    Price = "123"
};
db.Insertable<Order>(order).ExecuteCommand();

var tab = db.Queryable<User>().Includes(it => it.Orders).ToList();
Console.WriteLine(JsonConvert.SerializeObject(tab));
//输出[{"Id":1,"Name":"Test","Orders":[{"Id":2,"UserId":1,"Product":"111","Price":"123"}]}]

public class User
{
    [SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
    public int Id { get; set; }
    public string Name { get; set; }
    [Navigate(NavigateType.OneToMany, nameof(Order.UserId))]//一对多
    public List<Order> Orders { get; set; }
}

public class Order
{
    [SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
    public int Id { get; set; }
    public int UserId { get; set; }
    public string Product { get; set; }
    public string Price { get; set; }
}

三、去重测试

对单字段Name去重

var i = db.MasterQueryable<SysUser>().SplitTable(tabs => tabs.Take(4)).Select(s => s.Name).Distinct().ToList();

网站公告

今日签到

点亮在社区的每一天
去签到