开源软件名称:FastORM
开源软件地址:https://gitee.com/code2roc/FastORM
开源软件介绍:
在normal分支原有的基础上进行代码重构,基于原生的ado.net进行改造,不依赖于其他三方插件配置文件的一些配置项说明 <connectionStrings> <!--默认框架数据库连接--> <add name="Base_ConnectionString" connectionString="Database=test;Server=localhost;User ID=root;Password=;charset=utf8;Allow User Variables=True;" providerName="MySql.Data.MySqlClient" /> <!--全局事物库数据库连接,使用跨库事物,此连接必须配置--> <add name="GlobalTransition_ConnectionString" connectionString="Database=test;Server=localhost;User ID=root;Password=;charset=utf8;Allow User Variables=True;" providerName="MySql.Data.MySqlClient" /> <!--其他库数据库连接--> <add name="Test_ConnectionString" connectionString="Database=test2;Server=localhost;User ID=root;Password=;charset=utf8;Allow User Variables=True;" providerName="MySql.Data.MySqlClient" /> </connectionStrings> <appSettings> <!--是否开启全局SQL追踪,1:开启,0:关闭 配合超时时间使用--> <add key="FastORM_TraceOvertTimeSQL" value="0"/> <!--追踪超过设置时间时限的SQL(毫秒)语句--> <add key="FastORM_TraceOverTimeLimit" value="2000"/> </appSettings> 实体类创建 public class User:BaseEntity { [Key] public string UserGuid { set; get; } public string Name { set; get; } public int Age { set; get; } public string LoginName { set; get; } public string PassWord { set; get; } public DateTime AddDate { set; get; } } 注:所有实体类都要继承自BaseEntity,都需要标注主键字段[key]的注解 方法说明 在程序开始运行时执行DBUtil.Init(),会对所有继承自BaseEntity的实体类进行扫描,进行对象的属性,解析数据,基于Emit的get,set动态方法进行缓存 ,DBUtil和DBRow两个操作类都支持通过TraceSQL属性变量设置来进行SQL语句的跟踪,配置参数配置FastORM_TraceOvertTimeSQL和FastORM_TraceOverTimeLimit后可以对数据库的超时操作进行全面跟踪 增 删 改 查 User user = dbutil.FindOne<User>("yanpeng19940119"); 注: 1.查找默认按照主键进行查找 2.对于从数据库查找对象的更新,会基于ProxyAttribute对更改的字段进行记录,不会全字段更新 3.对于新创建的对象(从前台的Json传递的数据序列化成的对象),提供更新指定字段的方法Save(T Entity, string[] SaveColumn) 一些复杂方法的支持说明 计算表数量方法(用于分页) 批量插入方法 InsertBatch<T>(List<T> EntityList, int BatchSize = 500) 查找列表数据 List<T> FindList<T>(string SQL) 查找分页数据 List<T> FindListPage<T>(string SQL, int PageSize, int PageNum, string OrderBy) 查找联合查询数据 DataTable FindView(string SQL) 执行SQL语句 查询单个对象数据 Object ExecuteScar(string SQL) 注:所有方法都提供了切换数据源的方法重载 事物相关 同库事物 string exceptionstr = string.Empty; bool issuccess = dbutil.ExecuteTransition_SDB(delegate() { User user = new User(); user.UserGuid = "ceshi00992"; user.Name = "yanpeng"; user.LoginName = "15195007397"; user.PassWord = "123456"; user.Age = 26; user.AddDate = DateTime.Now; dbutil.Insert(user); dbutil.ExecuteSQL("update User set Age=27"); }, out exceptionstr); Console.WriteLine(issuccess); 分布式事物手动RollBack string exceptionstr = string.Empty; User user = new User(); user.UserGuid = "ceshi00992"; user.Name = "yanpeng"; user.LoginName = "15195007397"; user.PassWord = "123456"; user.Age = 26; user.AddDate = DateTime.Now; User user1 = dbutil.FindOne<User>("yanpeng19940119"); var orginalage = user1.Age; bool issuccess = dbutil.ExecuteTransition_DDB_HandleRollBack(delegate() { dbutil.Insert(user, "Test_ConnectionString"); user1.Age = 44; dbutil.Save(user); throw new Exception("111111"); }, delegate() { dbutil.Remove(user, "Test_ConnectionString"); user1.Age = orginalage; dbutil.Save(user); }, out exceptionstr); Console.WriteLine(issuccess); 分布式事物自动RollBack(只支持简单的insert,update,delete 完善中。。。) string exceptionstr = string.Empty; User user = new User(); user.UserGuid = "ceshi00992"; user.Name = "yanpeng"; user.LoginName = "15195007397"; user.PassWord = "123456"; user.Age = 26; user.AddDate = DateTime.Now; User user1 = dbutil.FindOne<User>("yanpeng19940119"); var orginalage = user1.Age; bool issuccess = dbutil.ExecuteTransition_DDB_AutoRollBack(delegate() { dbutil.Insert(user, "Test_ConnectionString"); user1.Age = 44; dbutil.Save(user1); throw new Exception("111111"); }, out exceptionstr); Console.WriteLine(issuccess); 注:自动分布式事物使用时,一定要执行DocFile下的sql建表脚本,并配置日志表的连接GlobalTransition_ConnectionString 弱引用工具类的一些使用 DBRow row = new DBRow("User", "UserGuid", "6cc5b098-0966-4b21-b93e-bdd25fded3ea"); row.TraceSQL = true; row["Name"] = "122yan"; row["LoginName"] = "heheheh"; row["AddDate"] = DateTime.Now; row.Insert(); row["Age"] = 33; row.Update(); row.Delete(); 弱引用类型同库事物 string exceptionstr = string.Empty; bool issuccess = DBRow.ExecuteTransition_SDB(delegate(DbTransaction Transition) { DBRow row = new DBRow("User", "UserGuid", "6cc5b098-0966-4b21-b93e-bdd25fded3ea"); row["Name"] = "122yan"; row["LoginName"] = "heheheh"; row["AddDate"] = DateTime.Now; row.Transition = Transition; row.Insert(); DBRow row1 = new DBRow("User", "UserGuid", "11223344"); row1.Transition = Transition; row1.Delete(); throw new Exception("1111"); }, out exceptionstr); Console.WriteLine(issuccess); |
请发表评论