{"id":19992644,"url":"https://github.com/toolgood/ToolGood.ReadyGo","last_synced_at":"2025-05-04T11:31:39.001Z","repository":{"id":112523695,"uuid":"69564620","full_name":"toolgood/ToolGood.ReadyGo","owner":"toolgood","description":"Micro ORM framework","archived":false,"fork":false,"pushed_at":"2025-02-21T13:54:37.000Z","size":2566,"stargazers_count":10,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-13T14:48:59.799Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/toolgood.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2016-09-29T12:18:10.000Z","updated_at":"2025-02-21T13:54:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"dfbc3dbc-f01a-4323-a3ce-742479c9d595","html_url":"https://github.com/toolgood/ToolGood.ReadyGo","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toolgood%2FToolGood.ReadyGo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toolgood%2FToolGood.ReadyGo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toolgood%2FToolGood.ReadyGo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toolgood%2FToolGood.ReadyGo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/toolgood","download_url":"https://codeload.github.com/toolgood/ToolGood.ReadyGo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252329560,"owners_count":21730635,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T04:52:15.392Z","updated_at":"2025-05-04T11:31:33.989Z","avatar_url":"https://github.com/toolgood.png","language":"C#","funding_links":[],"categories":["C\\#"],"sub_categories":[],"readme":"ToolGood.ReadyGo\n===\n\n\n欢迎使用`ToolGood.ReadyGo`！`ToolGood.ReadyGo` 是一款轻量级的ORM，\n它简单，因为汇聚作者多年经验，它快捷，基于PetaPoco核心，\n它能增加代码的可读性。\n\n### 快速上手\n\n```` csharp\n测试版本补充中\n`````\n\n\n### 功能简介：\n\n* 表操作：\n  * 支持表创建及删除\n  * 支持索引创建。\n  * 支持唯一索引创建。\n  * 定制Attribute。\n* 支持Object快速插入、修改、删除\n  * 增删改操作事件。\n* 支持原生SQL语言\n  * 支持SQL简化。\n  * 支持分页查询。\n  * 查询后执行OnLoaded 方法。\n* 支持动态SELECT\n  * 支持返回dynamic。\n  * 语法类似LINQ。\n* 支持存储过程。\n* 支持SQL执行监控。\n\n\n#### 1、数据表生成与删除\n\n##### 1.1、简单的数据表操作\n目前支持【表操作】的数据库有Sql Server、MySql、SQLite。\n\n```` csharp\nusing ToolGood.ReadyGo3.Attributes;\n\npublic class User\n{\n    public int Id {get;set;}\n    public int UserType {get;set;}\n    public string UserName {get;set;}\n    public string Password {get;set;}\n    public string NickName {get;set;}\n}\n\n\nusing ToolGood.ReadyGo3;\n\nvar helper = SqlHelperFactory.OpenSqliteFile(dbFile);\nvar table = helper._TableHelper;\ntable.CreateTable(typeof(User));\ntable.DropTable(typeof(User))\n````\n\n##### 1.2、ToolGood.ReadyGo3.Attributes 介绍\n在`ToolGood.ReadyGo3.Attributes`命名空间内提供以下几种Attribute\n* ExplicitColumns 用于Class，所有列（Property）必须显式映射。\n* Table   用于Class，定义表名、schema名、表名修饰TAG名。\n* PrimaryKey 用于Class，定义主键名、自动增加、Sequence名。\n* Column 用于Property，定义列。\n* ResultColumn 用于Property，定义返回列。\n* Ignore 用于Property，忽略该属性。\n* Index 用于Class，定义索引。\n* Unique 用于Class，定义唯一索引。\n* Required 用于Property，定义非空列。\n* FieldLength 用于Property，定义列长度。\n* Text 用于Property，定义TEXT类型列。\n* DefaultValue 用于Property，定义默认值。\n\n#### 2、数据表操作\n##### 2.1、增删改操作\n\n\n```` csharp\nvar helper = SqlHelperFactory.OpenSqliteFile(dbFile);\nUser u = new User() {\n    ....\n};\nhelper.Insert(u);\nhelper.Update(u);\nhelper.Save(u);\nhelper.Delete(u);\nhelper.Update\u003cUser\u003e(\"Set [Name]=@0 WHERE [Id]=@1\", \"Test\", 1);\nhelper.Delete\u003cUser\u003e(\"WHERE [Id]=@0\", 1);\nhelper.DeleteById\u003cUser\u003e(1);\n````\n\n##### 2.2、增删改操作事件\n\n```` csharp\nhelper._Events.BeforeInsert += Events_BeforeInsert;\nhelper._Events.AfterInsert += Events_AfterInsert;\nhelper._Events.BeforeUpdate += Events_BeforeUpdate;\nhelper._Events.AfterUpdate += Events_AfterUpdate;\nhelper._Events.BeforeDelete += Events_BeforeDelete;\nhelper._Events.AfterDelete += Events_AfterDelete;\nhelper._Events.BeforeExecuteCommand += Events_BeforeExecuteCommand;\nhelper._Events.AfterExecuteCommand += Events_AfterExecuteCommand;\nhelper._Events.ExecuteException += Events_ExecuteException;\n````\n\n##### 2.3、使用事务\n```` csharp\n    using (var tran=helper.UseTransaction()) {\n        ...\n\n    }\n````\n\n#### 3、SQL查询\n\n##### 3.1、单个查询\n```` csharp\nvar helper = SqlHelperFactory.OpenSqliteFile(dbFile);\nvar user1 = helper.Single\u003cUser\u003e(\"SELECT * FROM Users where [Id]=@0\", 1);\nvar user2 = helper.SingleById\u003cUser\u003e(1);\nvar user3 = helper.SingleOrDefault\u003cUser\u003e(\"SELECT * FROM Users where [Id]=@0\", 1);\nvar user4 = helper.SingleOrDefaultById\u003cUser\u003e(1);\n\nvar user5 = helper.First\u003cUser\u003e(\"SELECT * FROM Users where [Id]=@0\", 1);\nvar user6 = helper.FirstOrDefault\u003cUser\u003e(\"SELECT * FROM Users where [Id]=@0\", 1);\n\nvar dataset = helper.ExecuteDataSet(\"SELECT * FROM Users where [Id]=@0\", 1);\nvar datatable = helper.ExecuteDataTable(\"SELECT * FROM Users where [Id]=@0\", 1);\n\nvar userCount = helper.Count\u003cUser\u003e(\"SELECT COUNT(*) FROM Users Where [UserType]=@0\", 1);\nvar userCount2 = helper.ExecuteScalar\u003cint\u003e(\"SELECT COUNT(*) FROM Users Where [UserType]=@0\", 1);\n````\n\n\n##### 3.2、列表查询\n```` csharp\nvar helper = SqlHelperFactory.OpenSqliteFile(dbFile);\nvar users = helper.Select\u003cUser\u003e(\"SELECT * FROM Users Where [UserType]=@0\", 1);\nvar users2 = helper.Select\u003cUser\u003e(20,\"SELECT * FROM Users Where [UserType]=@0\", 1);\nvar users2 = helper.Select\u003cUser\u003e(0,20,\"SELECT * FROM Users Where [UserType]=@0\", 1);\nvar usersPage = helper.Page\u003cUser\u003e(1,20,\"SELECT * FROM Users Where [UserType]=@0\", 1);\n````\n\n##### 3.3、简化SQL\n\n```` csharp\nvar helper = SqlHelperFactory.OpenSqliteFile(dbFile);\nvar users1 = helper.Select\u003cUser\u003e(\"SELECT * FROM Users Where [UserType]=@0\", 1);\nvar users2 = helper.Select\u003cUser\u003e(\"FROM Users Where [UserType]=@0\", 1);\nvar users3 = helper.Select\u003cUser\u003e(\"Where [UserType]=@0\", 1);\n\nhelper.Update\u003cUser\u003e(\"UPDATE Users Set [Name]=@0 WHERE [Id]=@1\", \"Test\", 1);\nhelper.Update\u003cUser\u003e(\"Set [Name]=@0 WHERE [Id]=@1\", \"Test\", 1);\n\n````\n\n\n\n\n#### 4、动态查询\n##### 4.1、查询\n\n```` csharp\npublic User FindUser(int userId,string userName,string nickName)\n{\n    var helper = SqlHelperFactory.OpenMysql(\"127.0.0.1\", \"web\", \"root\", \"123456\");\n    return helper.Where\u003cUser\u003e()\n        .IfTrue(userId \u003e 0).Where((u) =\u003e u.Id == userId)\n        .IfSet(userName).Where((u) =\u003e u.UserName == userName)\n        .IfSet(nickName).Where((u) =\u003e u.NickName == nickName)\n        .SingleOrDefault();\n}\n````\n方法有：\n* `IfTrue`、`IfFalse`、`IfSet`、`IfNotSet`、`IfNull`、`IfNotNull`\n* `WhereNotIn`、`WhereIn`、`Where`、`OrderBy`、`GroupBy`、`Having`、`SelectColumn`\n* `Select`、`Page`、`Single`、`SingleOrDefault`、`First`、`FirstOrDefault`、`Count`、`ExecuteDataTable`、`ExecuteDataSet`\n* `Select\u003cT\u003e`、`Page\u003cT\u003e`、`SkipTake\u003cT\u003e`、`Single\u003cT\u003e`、`SingleOrDefault\u003cT\u003e`、`First\u003cT\u003e`、`FirstOrDefault\u003cT\u003e`\n \n\n#### 5、存储过程\n##### 5.1、定义类\n```` csharp\n    public class Chart_GetDeviceCount : SqlProcess\n    {\n        public Chart_GetDeviceCount(ToolGood.ReadyGo.SqlHelper helper) : base(helper)\n        {        }\n        protected override void OnInit()\n        {\n            _ProcessName = \"Chart_GetDeviceCount\";\n\n            Add\u003cint\u003e(\"_AgentId\", false);\n            Add\u003cint\u003e(\"_IsAll\", false);\n            Add\u003cint\u003e(\"_Type\", false);\n            Add\u003cDateTime\u003e(\"_StartDate\", false);\n            Add\u003cDateTime\u003e(\"_EndDate\", false);\n        }\n        public int AgentId { get { return _G\u003cint\u003e(\"_AgentId\"); } set { _S(\"_AgentId\", value); } }\n        public int IsAll { get { return _G\u003cint\u003e(\"_IsAll\"); } set { _S(\"_IsAll\", value); } }\n        public int Type { get { return _G\u003cint\u003e(\"_Type\"); } set { _S(\"_Type\", value); } }\n        public DateTime StartDate { get { return _G\u003cDateTime\u003e(\"_StartDate\"); } set { _S(\"_StartDate\", value); } }\n        public DateTime EndDate { get { return _G\u003cDateTime\u003e(\"_EndDate\"); } set { _S(\"_EndDate\", value); } }\n    }\n````\n\n##### 5.2、存储执行\n```` csharp\n    var helper = SqlHelperFactory.OpenMysql(\"127.0.0.1\", \"wifi\", \"root\", \"123456\");\n    Chart_GetDeviceCount c = new Chart_GetDeviceCount(helper);\n    c.AgentId = 0;\n    c.IsAll = 0;\n    c.Type = 0;\n    c.StartDate = DateTime.Parse(\"2016-06-01\");\n    c.EndDate = DateTime.Parse(\"2016-07-01\");\n            \n    var dt= c.ExecuteScalar\u003cint\u003e ();\n````\n\n \n#### 6、SQL执行监控\n\n#### 6.1、上一次SQL执行语句\n\n```` csharp\n    var sql = helper._Sql.LastSQL;\n    var args = helper._SqlSql.LastArgs;\n    var cmd = helper._Sql.LastCommand;\n    var err = helper._Sql.LastErrorMessage;\n\n````\n\n\n \n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoolgood%2FToolGood.ReadyGo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoolgood%2FToolGood.ReadyGo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoolgood%2FToolGood.ReadyGo/lists"}