{"id":25757742,"url":"https://github.com/oliver021/entity-dock","last_synced_at":"2026-05-09T05:04:04.324Z","repository":{"id":114246884,"uuid":"500918514","full_name":"oliver021/entity-dock","owner":"oliver021","description":"A superset with libraries, components, tools and more to work with entity on .Net","archived":false,"fork":false,"pushed_at":"2022-06-07T16:25:39.000Z","size":266,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-26T16:44:47.585Z","etag":null,"topics":["api","asp-net-core","controller","data","database","dotnet","entity","entity-framework-core","library","model","mvc","netstandard","orm","support","webapi"],"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/oliver021.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":"2022-06-07T16:24:55.000Z","updated_at":"2025-02-01T00:50:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"639af18e-1070-4aef-a540-20363d22f7fd","html_url":"https://github.com/oliver021/entity-dock","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/oliver021/entity-dock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliver021%2Fentity-dock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliver021%2Fentity-dock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliver021%2Fentity-dock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliver021%2Fentity-dock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oliver021","download_url":"https://codeload.github.com/oliver021/entity-dock/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oliver021%2Fentity-dock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32807861,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"online","status_checked_at":"2026-05-09T02:00:06.633Z","response_time":123,"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":["api","asp-net-core","controller","data","database","dotnet","entity","entity-framework-core","library","model","mvc","netstandard","orm","support","webapi"],"created_at":"2025-02-26T16:32:15.664Z","updated_at":"2026-05-09T05:04:04.312Z","avatar_url":"https://github.com/oliver021.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EntityDock\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"290\" height=\"290\" src=\"entitydock-logo.png\"\u003e\n\u003c/p\u003e\n\nEntityDock is a complete set of libraries as a complete SDK that comes with tools, utilities, and samples,\nproviding a lot of functionality and infrastructure for designing entity-oriented data applications.\n\nThe libraries are well defined by themes and in many cases hardly decoupled, \noffering different levels of solutions, where you can start from using \nthe repository and service layers for entities offered by these \nlibraries to the automatic generation of controllers, contexts,\nUI, cohesion of services and a long etc.\n\nThe library set starts as said before by offering repository \nand generic service layers according to various types of entities,\nthat is, the implementation is offered and you only have to define\nthe classes that are going to be the entities. Even if your \nrepository layer doesn't vary in methods from one entity to\nanother, using service injection you can access repository \ninstances just by passing your entity type arguments. \nThe repository implementation is equipped with various\nadditional methods to the typical \"CRUD Functions\", \nsuch as batch, operations, paging, and more are written\nto each new project. Then the service layer offers\na generic `DataService` implementation and several\ndeclaration payloads of this class. This layer uses\nthe repository layer and adds support for entity mapping,\nlogging, and hooks. The service layer allows you to go straight\nto the heart of your business logically everything else you have\nto do declare because the solution is already implemented.\n\nParallel to the layer, these layers offer dynamic query methods,\nto order, filter, do text searches, select, group, all dynamically,\nfor example, expose functionalities from a `webapi`. However after\nthe implementation of layers in business logic, other automations \nare offered, such as taking all the entities of an assembly and \nadding them to a specific `DbContext` or one that is even instantiated\npast the types of entities or assembly that contains those entities.\nFrom there you can jump straight to exposing various entity operations\nto an MVC controller without even declaring the controllers or you may\neven want to extend predefined generic controllers with your own. \nThis allows you to have a REST API with very advanced features \nsuch as Joins, configurable text searches with endpoint for \nautocompletion, pagination and much more, very quickly and effortlessly.\nIn short, all this and much that ends even with the generation\nof graphical interfaces in Blazor.\n\n# Getting Started\n\nThe easiest way to install EntityDock in your project is to install the latest EntityDock NuGet package. Beforehand you should know exactly which package you need. This is why I bring you a table with different packages available for now.\n\n\n\n| Package                       | Description                                                  |\n| ----------------------------- | ------------------------------------------------------------ |\n| `EntityDock.Lib.Base`         | A simple interfaces, some stock and additional bases class.  |\n| `EntityDock.Lib.Persistence`  | Set of services that implement the repository pattern and a service layer to use within applications base on entities. |\n| `EntityDock.Lib.Auto`         | The basic extensions for generating controllers from entities and a `DbContext` without writing code. Also includes a called `AutoContext` to receive either manually or automatically  a set of entities and registers as data model. |\n| `EntityDock.Extensions.Query` | A set of extensions methods to build dynamic and advanced queries. |\n| `EntityDock.Lib.StarterKit`   | A set of stuff like efcore providers and some method to start a project much faster with a few lines of code. |\n\nIt's possible that more packages may be added in the future.\n\n\n\nYou can install these package following the next example:\n\n```bash\nInstall-Package EntityDock.Lib.Auto\n```\n\nor using dotnet CLI:\n\n```bash\ndotnet add package EntityDock.Lib.Auto\n```\n\n\n\n# Key questions\n\n**What's mean \"generate controller\"?** Yes, without writing a line of code or declaring a class you can have API Controllers base on ASP.NET Core MVC from declared entities. The code required for this is as follows:\n\n```c#\nmvc.AddDataControllers(new[] {typeof(StudentEntity)});\n```\n\nWhen you are setting up your MVC options in ASP.NET Core, you must call this method and pass a collection of entities marked with one attribute that indicates the route. \n\n```c#\n[SetRouteAttibute(\"data/students\")]\npublic class StudentEntity{\n    \n    public uint Id {get;set;}\n    \n    public string Name {get;set;}\n    \n    public uint Age {get;set;}\n    \n    public uint Degree {get;set;}\n    \n    public string ClassroomName {get;set;}\n}\n```\n\nThen you will have a complete API Rest about this entity with full methods, Crud, search, filters, sort and more. Of course you should care about your DB connections and migrations if you are using relational database. This package is completely compatible with Entity Framework Core.  \n\n**How works the `AutoDbContext`?** It's simple, this is a class that derived from `DbContext` in Entity Framework Core, then using this class, you can create a context from external assemblies or types collections that will has these types as entities and this context can be used like other any context of Entity Framework. Using this way you cannot setup via `ModelBuilder` API fluent methods inside context class, you just have conventions and annotations for `AutoDbContext`. This is a natural limitations 'cause its job consists of including different entities without declare specific `DbContext`. \n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n\n1.  Fork it!\n2.  Create your feature branch: `git checkout -b my-new-feature`\n3.  Add your changes: `git add .`\n4.  Commit your changes: `git commit -am 'Add some feature'`\n5.  Push to the branch: `git push origin my-new-feature`\n6.  Submit a pull request :sunglasses:\n\n## Versioning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags).\n\n## Authors\n\n* **Oliver Valiente** - [Oliver Valiente](https://github.com/oliver021)\n\nSee also the list of [contributors](https://github.com/oliver021/ecmalinq/contributors) who participated in this project.\n\n## License\n\n[MIT License](https://andreasonny.mit-license.org/2019) © Oliver Valiente","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foliver021%2Fentity-dock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foliver021%2Fentity-dock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foliver021%2Fentity-dock/lists"}