using FreeSql; using FreeSql.DataAnnotations; using System; using System.Data; using System.Diagnostics; using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; /// /// 包括 CreateTime/UpdateTime/IsDeleted 的实体基类 /// [Table(DisableSyncStructure = true)] public abstract class BaseEntity { static IFreeSql _ormPriv; /// /// 全局 IFreeSql orm 对象 /// public static IFreeSql Orm => _ormPriv ?? throw new Exception(@"使用前请初始化 BaseEntity.Initialization(new FreeSqlBuilder() .UseAutoSyncStructure(true) .UseConnectionString(DataType.Sqlite, ""data source=test.db;max pool size=5"") .Build());"); /// /// 初始化BaseEntity /// BaseEntity.Initialization(new FreeSqlBuilder() /// /// .UseAutoSyncStructure(true) /// /// .UseConnectionString(DataType.Sqlite, "data source=test.db;max pool size=5") /// /// .Build()); /// /// IFreeSql orm 对象 public static void Initialization(IFreeSql fsql) { _ormPriv = fsql; _ormPriv.Aop.CurdBefore += (s, e) => Trace.WriteLine(e.Sql + "\r\n"); } /// /// 创建时间 /// public DateTime CreateTime { get; set; } /// /// 更新时间 /// public DateTime UpdateTime { get; set; } /// /// 逻辑删除 /// public bool IsDeleted { get; set; } /// /// 开启工作单元事务 /// /// public static IUnitOfWork Begin() => Begin(null); /// /// 开启工作单元事务 /// /// 事务等级 /// public static IUnitOfWork Begin(IsolationLevel? level) { var uow = Orm.CreateUnitOfWork(); uow.IsolationLevel = level; return uow; } }