using SqlSeverTest.UserTestCases; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OrmTest { public class Unita3affafa { public static void Init() { var db = new SqlSugarClient(new ConnectionConfig() { ConnectionString =Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true, InitKeyType = InitKeyType.Attribute }, db => { //过滤器写在这儿就行了 #region 添加查询过滤器 db.QueryFilter.AddTableFilter(x => x.IsDeleted == 0); db.QueryFilter.AddTableFilter(x => x.OrgId == 10); #endregion }); #region SQL执行前 db.Aop.OnLogExecuting = (sql, pars) =>//SQL执行前 { var sqlString = UtilMethods.GetSqlString(DbType.MySql, sql, pars); Console.WriteLine(sqlString); }; #endregion //#region 添加查询过滤器 //db.QueryFilter.AddTableFilter(x => x.IsDeleted == 0); //db.QueryFilter.AddTableFilter(x => x.OrgId == 10); //#endregion db.DbMaintenance.DropTable(); //用例代码 var testSplit001 = new TestSplit001() { Id = DateTime.Now.Ticks, Name = "insert-" + DateTime.Now.Ticks, CreateTime = DateTime.Now, IsDeleted = 0, OrgId = 10, }; { Console.WriteLine("-----------------------------------插入数据-------------------------------------"); var result = db.Insertable(testSplit001).SplitTable().ExecuteCommand();//用例代码 } //testSplit001.IsDeleted = 1; //testSplit001.Name = "delete"; //{ // Console.WriteLine("-----------------------------------同步更新数据(只更新IsDeleted)-------------------------------------"); // //同步没问题--只更新IsDeleted字段 // var result2 = db.Updateable(testSplit001).UpdateColumns(it => it.IsDeleted).SplitTable().ExecuteCommand();//用例代码 //} //{ // Console.WriteLine("-----------------------------------异步更新数据(只更新IsDeleted)-------------------------------------"); // //异步有问题--IsDeleted、Field1都更新了 // db.Updateable(testSplit001).UpdateColumns(it => it.IsDeleted).SplitTable().ExecuteCommandAsync(); //} { Console.WriteLine("-----------------------------------查询-------------------------------------"); var list = db.Queryable().SplitTable().ToList(); var sql = db.Queryable().SplitTable().ToSqlString(); if (sql.Split("AND").Length > 3) { throw new Exception("unit error"); } if (!sql.Contains("AND")) { throw new Exception("unit error"); } } } } /// /// /// [SplitTable(SplitType.Month)]//按月分表 (自带分表支持 年、季、月、周、日) [SugarTable("test001_{year}{month}{day}", IsCreateTableFiledSort = true)]//3个变量必须要有,这么设计为了兼容开始按年,后面改成按月、按日 [SugarIndex("index_createtime_", nameof(CreateTime), OrderByType.Asc)] public partial class TestSplit001 : IDeletedFilter, IOrgFilter { /// /// /// public TestSplit001() { } /// /// 主键 /// [SugarColumn(IsPrimaryKey = true)] public long Id { get; set; } /// /// /// public string Name { get; set; } /// /// 创建时间 /// [SplitField] public DateTime CreateTime { get; set; } /// /// /// public byte IsDeleted { get; set; } /// /// /// public long OrgId { get; set; } } /// /// 接口过滤器(删除标志) /// public interface IDeletedFilter { /// /// 删除标志 /// public byte IsDeleted { get; set; } } /// /// 接口过滤器(机构标志) /// public interface IOrgFilter { /// /// 机构标志 /// public long OrgId { get; set; } } }