{"id":22688951,"url":"https://github.com/erenken/querypattern","last_synced_at":"2025-03-29T16:15:18.020Z","repository":{"id":161247514,"uuid":"627634111","full_name":"erenken/queryPattern","owner":"erenken","description":"EntityFramework Query Pattern","archived":false,"fork":false,"pushed_at":"2024-12-31T06:13:21.000Z","size":51,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-04T16:50:46.445Z","etag":null,"topics":["entity-framework-core","nuget-package","query-pattern"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erenken.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"publiccode":null,"codemeta":null}},"created_at":"2023-04-13T21:59:38.000Z","updated_at":"2024-12-31T06:12:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"a4ddda26-ea63-4107-b8ac-7724d1bbc40e","html_url":"https://github.com/erenken/queryPattern","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/erenken%2FqueryPattern","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erenken%2FqueryPattern/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erenken%2FqueryPattern/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erenken%2FqueryPattern/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erenken","download_url":"https://codeload.github.com/erenken/queryPattern/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246207508,"owners_count":20740723,"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":["entity-framework-core","nuget-package","query-pattern"],"created_at":"2024-12-10T00:16:47.577Z","updated_at":"2025-03-29T16:15:17.983Z","avatar_url":"https://github.com/erenken.png","language":"C#","readme":"[![Build and Test](https://github.com/erenken/queryPattern/actions/workflows/build-tests.yml/badge.svg)](https://github.com/erenken/queryPattern/actions/workflows/build-tests.yml) [![Release](https://github.com/erenken/queryPattern/actions/workflows/release.yml/badge.svg)](https://github.com/erenken/queryPattern/actions/workflows/release.yml) \u003ca href=\"https://www.nuget.org/packages/myNOC.EntityFramework.Query\"\u003e\u003cimg src=\"https://img.shields.io/nuget/v/myNOC.EntityFramework.Query.svg\" alt=\"NuGet Version\" /\u003e\u003c/a\u003e \n\u003ca href=\"https://www.nuget.org/packages/myNOC.EntityFramework.Query\"\u003e\u003cimg src=\"https://img.shields.io/nuget/dt/myNOC.EntityFramework.Query.svg\" alt=\"NuGet Download Count\" /\u003e\u003c/a\u003e\n\n# myNOC.EntityFramework.Query\n\n## Overview\n\nThis *Query Pattern* is something I got from listening to a [.NET Rocks](https://www.dotnetrocks.com/) episode #1494 \n[Developer Tips and Design Patterns with Steve Smith](https://www.dotnetrocks.com/details/1494).  [Steve Smith](https://ardalis.com/) talks about the \n*Specification Pattern* at 49:50 in the podcast, and this is what inspired this.\n\nWhat Steve describes is a problem we saw in our projects.  Developers would keep adding more methods to the repository or keep adding JOINs to a result \nbecause they need this one other column added to an already returning list.  This will start to overly complicate the original list.  For example, you \nalready have a screen that shows the list of users, and if they are active or not.  Now, some other screen needs the list of users and wants the security \nrole or permissions that user has also displayed.  What happens often is someone just goes and modifies that original user list and adds this other data.  \nSo, where you needed a simple quick list of users is now doing way more than it needs and could potentially slow down the query.\n\nThis pattern also gives you the ability to easily test your queries.  As Steve points out in the podcast what might work fine in compile time, \nor even within a unit test using mocked lists as your data, could give you a runtime error when running against EntityFramework.  \n\n## nuget.org\n\nFor installation instructions please to to [myNOC.EntityFramework.Query](https://www.nuget.org/packages/myNOC.EntityFramework.Query/) at [nuget.org](https://nuget.org).\n\n## Documentation \u0026 Usage\n\nThe documentation for the library can be found [here](./src/myNOC.EntityFramework.Query/README.md)\nA very simple sample project [here](./sample/QuerySample/), ","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferenken%2Fquerypattern","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferenken%2Fquerypattern","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferenken%2Fquerypattern/lists"}