{"id":37039775,"url":"https://github.com/sidzhao/easy-dapper-extensions","last_synced_at":"2026-01-14T04:42:52.753Z","repository":{"id":54174943,"uuid":"341550856","full_name":"sidzhao/easy-dapper-extensions","owner":"sidzhao","description":"EasyDapperExtensions is an extension that supports base CRUD operations (Get, Insert, Update, Delete) using predicate.","archived":false,"fork":false,"pushed_at":"2021-03-06T02:36:12.000Z","size":27,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-01T04:54:51.722Z","etag":null,"topics":["dapper","orm","sql"],"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/sidzhao.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}},"created_at":"2021-02-23T12:41:06.000Z","updated_at":"2021-04-01T03:32:54.000Z","dependencies_parsed_at":"2022-08-13T08:20:43.211Z","dependency_job_id":null,"html_url":"https://github.com/sidzhao/easy-dapper-extensions","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sidzhao/easy-dapper-extensions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sidzhao%2Feasy-dapper-extensions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sidzhao%2Feasy-dapper-extensions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sidzhao%2Feasy-dapper-extensions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sidzhao%2Feasy-dapper-extensions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sidzhao","download_url":"https://codeload.github.com/sidzhao/easy-dapper-extensions/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sidzhao%2Feasy-dapper-extensions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28409774,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["dapper","orm","sql"],"created_at":"2026-01-14T04:42:51.727Z","updated_at":"2026-01-14T04:42:52.731Z","avatar_url":"https://github.com/sidzhao.png","language":"C#","readme":"# EasyDapperExtensions\nEasyDapperExtensions is an extension that supports base CRUD operations (Get, Insert, Update, Delete) using predicate. \n\n# Installing via NuGet\nThe easiest way to install Daybreaksoft.Extensions.Functions is via [NuGet](https://www.nuget.org/packages/EasyDapperExtensions).  \nIn Visual Studio's [Package Manager Console](https://docs.microsoft.com/zh-cn/nuget/tools/package-manager-console), enter the following command:\n```bash\nInstall-Package EasyDapperExtensions\n```\n\n# Supported Databases\n- SqlServer\n- MySql\n- Postgres\n- Sqlite\n- SqlCe\n\n# How to use\n\nThe following examples will use a User POCO defined as:\n\n```c#\npublic class User\n{\n    [Key]\n    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]\n    public int Id { get; set; }\n    public string UserName { get; set; }\n    public bool Active { get; set; }\n    public DateTime CreatedTime { get; set; }\n}\n```\n\n## Get Operation (with Predicates)\n\nUsed to get exactly one entity with given predicate. The following cases will throw exception:\n- Not found entity.\n- Found more than one entity.\n- Not found primary key column.\n- Found more than one primary key column.\n\n\n```c#\nusing (var cn = new SqlConnection(_connectionString))\n{\n    cn.Open();\n    var user = cn.Get\u003cUser\u003e(1); \n    // Or use cn.GetAsync\u003cUser\u003e(1)\n    cn.Close();\n}\n```\n\n## GetAll Operation (with Predicates)\n\nUsed to get all entities based on given predicate.\n\n```c#\nusing (var cn = new SqlConnection(_connectionString))\n{\n    cn.Open();\n    var users = cn.GetAll\u003cUser\u003e(p =\u003e p.IsActive \u0026\u0026 p.CreatedTime \u003e DateTime.Now); \n    // Or use cn.GetAllAsync\u003cUser\u003e(p =\u003e p.IsActive \u0026\u0026 p.CreatedTime \u003e DateTime.Now)\n    cn.Close();\n}\n```\n\n## GetPaged Operation (with Predicates)\n\nUsed to get paged entities based on given predicate.\n\n```c#\nusing (var cn = new SqlConnection(_connectionString))\n{\n    cn.Open();\n    var users = cn.GetPaged\u003cUser\u003e(0, 10, p =\u003e p.IsActive); \n    // Or use cn.GetPagedAsync\u003cUser\u003e(0, 10, p =\u003e p.IsActive)\n    cn.Close();\n}\n```\n\n## GetSingle Operation (with Predicates)\n\nUsed to get exactly one entity with given predicate. Throws exception if no entity or more than one entity.\n\n```c#\nusing (var cn = new SqlConnection(_connectionString))\n{\n    cn.Open();\n    var user = cn.GetSingle\u003cUser\u003e(p =\u003e p.Id == 1); \n    // Or use cn.GetSingleAsync\u003cUser\u003e(p =\u003e p.Id == 1)\n    cn.Close();\n}\n```\n\n## GetSingleOrDefault Operation (with Predicates)\n\nUsed to get exactly one entity with given predicate or null if not found. Throws exception if more than one entity.\n\n```c#\nusing (var cn = new SqlConnection(_connectionString))\n{\n    cn.Open();\n    var user = cn.GetSingleOrDefault\u003cUser\u003e(p =\u003e p.Id == 1); \n    // Or use cn.GetSingleOrDefaultAsync\u003cUser\u003e(p =\u003e p.Id == 1)\n    cn.Close();\n}\n```\n\n## GetFirst Operation (with Predicates)\n\nUsed to get an entity with given given predicate. Throws exception if no entity.\n\n```c#\nusing (var cn = new SqlConnection(_connectionString))\n{\n    cn.Open();\n    var user = cn.GetFirst\u003cUser\u003e(p =\u003e p.IsActive); \n    // Or use cn.GetFirstAsync\u003cUser\u003e(p =\u003e p.IsActive)\n    cn.Close();\n}\n```\n\n## GetFirstOrDefault Operation (with Predicates)\n\nUsed to get an entity with given given predicate or null if not found.\n\n```c#\nusing (var cn = new SqlConnection(_connectionString))\n{\n    cn.Open();\n    var user = cn.GetFirst\u003cUser\u003e(p =\u003e p.IsActive); \n    // Or use cn.GetFirstOrDefaultAsync\u003cUser\u003e(p =\u003e p.IsActive)\n    cn.Close();\n}\n```\n\n## Count Operation (with Predicates)\n\nUsed to count quantity with given given predicate.\n\n```c#\nusing (var cn = new SqlConnection(_connectionString))\n{\n    cn.Open();\n    var count = cn.Count\u003cUser\u003e();\n    // Or use cn.CountAsync\u003cUser\u003e()\n    var activeCount = cn.Count\u003cUser\u003e(p =\u003e p.IsActive);\n    // Or use cn.CountAsync\u003cUser\u003e(p =\u003e p.IsActive)\n    cn.Close();\n}\n```\n\n## Any Operation (with Predicates)\n\nUsed to determine whether an entity exists with given given predicate.\n\n```c#\nusing (var cn = new SqlConnection(_connectionString))\n{\n    cn.Open();\n    var result = cn.Any\u003cUser\u003e();\n    // Or use cn.AnyAsync\u003cUser\u003e()\n    var activeResult = cn.Any\u003cUser\u003e(p =\u003e p.IsActive);\n    // Or use cn.AnyAsync\u003cUser\u003e(p =\u003e p.IsActive)\n    cn.Close();\n}\n```\n\n## Insert Operation\n\nUsed to insert a new entity.\n\n```c#\nusing (var cn = new SqlConnection(_connectionString))\n{\n    cn.Open();\n    User user = new User \n    {\n         UserName = \"Admin\",\n         IsActive = true,\n         CreatedTime = DateTime.Now\n    };\n    cn.Insert(user);\n    // Or use cn.InsertAsync(user)\n    cn.Close();\n}\n```\n## InsertAndGetId Operation\n\nUsed to insert a new entity and return inserted primary key.\n\n```c#\nusing (var cn = new SqlConnection(_connectionString))\n{\n    cn.Open();\n    User user = new User \n    {\n         UserName = \"Admin\",\n         IsActive = true,\n         CreatedTime = DateTime.Now\n    };\n    var id = cn.InsertAndGetId(user);\n    // Or use cn.InsertAndGetIdAsync(user)\n    cn.Close();\n}\n```\n\n## Update Operation\n\nUsed to update an existing entity. Throws exception if no primary key column.\n\n```c#\nusing (var cn = new SqlConnection(_connectionString))\n{\n    cn.Open();\n    var user = cn.Get\u003cUser\u003e(1);\n    user.Name = \"UpdatedUser\";\n    cn.Update(user);\n    // Or use cn.UpdateAsync(user)\n    cn.Close();\n}\n```\n\n## Delete Operation (with Predicates)\n\nUsed to delete an existing entity. Throws exception if no primary key column.\n\n```c#\nusing (var cn = new SqlConnection(_connectionString))\n{\n    cn.Open();\n    cn.Delete\u003cUser\u003e(1);\n    // Or use cn.DeleteAsync(1)\n    cn.Close();\n}\n```\n\nUsed to delete entities with given given predicate.\n\n```c#\nusing (var cn = new SqlConnection(_connectionString))\n{\n    cn.Open();\n    cn.Delete\u003cUser\u003e(p =\u003e p.IsActive);\n    // Or use cn.DeleteAsync\u003cUser\u003e(p =\u003e p.IsActive)\n    cn.Close();\n}\n```\n\n# Logging\n\nSupport to use Microsoft.Extensions.Logging.ILogger to logging database command information.\n\n```c#\nusing (var cn = new SqlConnection(_connectionString))\n{\n    cn.Open();\n    cn.Get\u003cUser\u003e(1, logger: Logger);\n    cn.Close();\n}\n```\n\nOutput\n\n```\nExecuted DbCommand [Parameters: Id = 1]\nSELECT * FROM \"Users\" WHERE \"Id\" = @Id\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsidzhao%2Feasy-dapper-extensions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsidzhao%2Feasy-dapper-extensions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsidzhao%2Feasy-dapper-extensions/lists"}