{"id":19991754,"url":"https://github.com/EminemJK/Banana","last_synced_at":"2025-05-04T10:32:34.921Z","repository":{"id":33428379,"uuid":"158345559","full_name":"EminemJK/Banana","owner":"EminemJK","description":"🍌 The collection of CRUD helpers for Dapper.","archived":false,"fork":false,"pushed_at":"2024-04-03T09:35:54.000Z","size":3137,"stargazers_count":62,"open_issues_count":0,"forks_count":20,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-04-03T10:37:17.475Z","etag":null,"topics":["banana","dapper","dotnet","micro-orm","orm","redis","repository","unitofwork"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EminemJK.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}},"created_at":"2018-11-20T07:05:08.000Z","updated_at":"2024-02-05T03:16:00.000Z","dependencies_parsed_at":"2023-01-15T00:52:42.002Z","dependency_job_id":"299587a8-a340-4f8c-9061-6c92bc513ede","html_url":"https://github.com/EminemJK/Banana","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EminemJK%2FBanana","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EminemJK%2FBanana/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EminemJK%2FBanana/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EminemJK%2FBanana/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EminemJK","download_url":"https://codeload.github.com/EminemJK/Banana/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224392260,"owners_count":17303658,"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":["banana","dapper","dotnet","micro-orm","orm","redis","repository","unitofwork"],"created_at":"2024-11-13T04:51:54.039Z","updated_at":"2024-11-13T04:54:11.475Z","avatar_url":"https://github.com/EminemJK.png","language":"C#","funding_links":[],"categories":["C\\#"],"sub_categories":[],"readme":"\u003cdiv align=center\u003e\u003cimg width = '150' height ='150' src =\"https://raw.githubusercontent.com/EminemJK/Banana/master/Banana/Doc/banana_logo.png\"/\u003e\u003c/div\u003e\r\n\r\n\u003e Developer: Lio.Huang\r\n\r\n| Package | NuGet Stable | NuGet Pre-release | Downloads |\r\n| ------- | ------------ | ----------------- | --------- |\r\n| [Banana.Uow](https://www.nuget.org/packages/Banana.Uow/) | [![Banana.Uow](https://img.shields.io/nuget/v/Banana.Uow.svg)](https://www.nuget.org/packages/Banana.Uow/)  | [![Banana.Uow](https://img.shields.io/nuget/vpre/Banana.Uow.svg)](https://www.nuget.org/packages/Banana.Uow/) | [![Banana.Uow](https://img.shields.io/nuget/dt/Banana.Uow.svg)](https://www.nuget.org/packages/Banana.Uow/) |\r\n| [Banana.Utility](https://www.nuget.org/packages/Banana.Utility/) | [![Banana.Utility](https://img.shields.io/nuget/v/Banana.Utility.svg)](https://www.nuget.org/packages/Banana.Utility/)  | [![Banana.Utility](https://img.shields.io/nuget/vpre/Banana.Utility.svg)](https://www.nuget.org/packages/Banana.Utility/) | [![Banana.Utility](https://img.shields.io/nuget/dt/Banana.Utility.svg)](https://www.nuget.org/packages/Banana.Utility/) |\r\n\r\n# Banana.Uow\r\n### 项目介绍\r\n👉[English documentation](https://github.com/EminemJK/Banana/wiki)\r\n\r\n基于Dapper封装的仓储、工作单元，支持SQL Server, MySQL, Sqlite，Postgresql，Oracle...\r\n\r\n### 一、使用说明\r\n#### 1. 注册链接\r\n``` csharp\r\n ConnectionBuilder.ConfigRegist(\"strConn\", Banana.Uow.Models.DBType.SqlServer);\r\n```\r\n#### 2. 模型\r\n引入命名空间：\r\n``` csharp\r\nusing Banana.Uow.Models;\r\n```\r\n创建模型：\r\n``` csharp\r\n   [Table(\"T_Student\")]\r\n   public class Student : IEntity\r\n   {\r\n      // if Oracle db\r\n     //[Key(\"user_sequence\")]\r\n       [Key]\r\n       public int Id { get; set; }\r\n       public string Name { get; set; }\r\n       public int Sex { get; set; }\r\n       public int ClassId { get; set; }\r\n       [Computed]\r\n       public DateTime Createtime { get; set; }\r\n       [Column(\"UserNameFiel\")]\r\n       public string UserName { get; set; }\r\n   }\r\n```\r\n特性说明：\r\n* Table：指定实体对应地数据库表名，如果类名和数据库表名不同，需要设置\r\n* Key：指定此列为自动增长主键（oracle设置序列名称即可）\r\n* ExplicitKey：指定此列为非自动增长主键（例如guid，字符串列）\r\n* Computed：计算属性，此列不作为更新\r\n* Write：指定列是否可写\r\n* Column：指定列名\r\n* ExceptUpdate: 指定该列不需要Update操作\r\n#### 3. 仓储使用\r\n#### 3.1 增删改查\r\n``` csharp\r\n    var repo = new Repository\u003cStudent\u003e();\r\n    //查询单个\r\n    var model = repo.Query(7);\r\n\r\n    //查询列表\r\n    var list = repo.QueryList(\"Name like @Name\", new { Name = \"%EminemJK%\" });\r\n\r\n    //分页查询\r\n    var page1 = repo.QueryList(1,5);\r\n    var page2 = repo.QueryList(2,5);\r\n    … …\r\n    var page0 = repo.QueryList(1, 10, \"ID\u003e@Id\", new { Id = 2 }, \"id\", false);\r\n\r\n    //删除\r\n    boo b = repo.Delete(model);\r\n    boo b = repo.Delete(new Category(){ Id =7 });\r\n\r\n    //更新\r\n    bool model = repo.Update(model);\r\n\r\n    //插入\r\n    int id = (int)repo.Insert(new Student() { Name = \"EminemJK\",… … });\r\n\r\n    //批量插入\r\n    bool b = repo.InsertBatch(sql,List);\r\n\r\n    //执行语句\r\n    int res = repo.Execute(sql,param);\r\n```\r\n#### 3.2 多数据库时\r\n``` csharp\r\n    var dbA = \"dbStoreA\";\r\n    var dbB = \"dbStoreA\";\r\n    ConnectionBuilder.ConfigRegist(\"strConnA\", DBType.SqlServer2012, dbA);\r\n    ConnectionBuilder.ConfigRegist(\"strConnB\", DBType.SqlServer2012, dbB);\r\n    \r\n    var userInfo_ReadRepo = new Repository\u003cStudent\u003e(dbA); \r\n    var userInfo_WirteRepo = new Repository\u003cStudent\u003e(dbA);\r\n    Your code ……\r\n```\r\n#### 4. 工作单元\r\n``` csharp\r\nusing (UnitOfWork uow = new UnitOfWork())\r\n{\r\n       var studentRepo = uow.GetRepository\u003cStudent\u003e();\r\n       var model = new Student(\"EminemJK\");\r\n       var sid = studentRepo.Insert(model);\r\n\r\n       var classRepo = uow.GetRepository\u003cMClass\u003e();\r\n       var cid = classRepo.Insert(new MClass(\"Fifth Grade\"));\r\n       if (sid \u003e 0 \u0026\u0026 cid \u003e 0)\r\n       {\r\n            uow.Commit();\r\n       }\r\n       else\r\n       {\r\n            uow.Rollback();\r\n       }\r\n}\r\n```\r\n\r\n多数据库时\r\n``` csharp\r\nusing (UnitOfWork uow = new UnitOfWork(IDbConnection context))\r\n{\r\n      Your code\r\n}\r\n```\r\nOR\r\n``` csharp\r\nusing (UnitOfWork uow = new UnitOfWork(\"dbKey\"))\r\n{\r\n      Your code\r\n}\r\n```\r\n#### 5.日志记录\r\n[MiniProfiler](https://github.com/MiniProfiler/dotnet)\r\n\r\n# Banana.Utility\r\n### 公用库 Utility\r\n\r\n| Name| Use |\r\n| ------- | ------- |\r\n| RedisUtils | 基于StackExchange.Redis封装 |\r\n| PinYin  | 拼音帮助类|\r\n| JavaDate | 时间戳 |\r\n| ModelConvertUtil | 模型拷贝 |\r\n| PagingUtil | 分页 |\r\n| HttpHelper | easy Get \u0026 Post |\r\n| EnumDescription | 枚举特性说明 |\r\n| Encryption | 常用加密解密，DES/MD5/RSA |\r\n\r\n## To Be Continued\r\n👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍\r\n\r\n-------\r\nLicense\r\n-------\r\n[MIT](https://github.com/EminemJK/Banana/blob/master/LICENSE)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FEminemJK%2FBanana","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FEminemJK%2FBanana","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FEminemJK%2FBanana/lists"}