{"id":25284066,"url":"https://github.com/chizer1/dblocator","last_synced_at":"2025-07-17T20:38:32.421Z","repository":{"id":274251194,"uuid":"922166973","full_name":"chizer1/DbLocator","owner":"chizer1","description":".NET Library for Multi-Tenant SQL Server connection management","archived":false,"fork":false,"pushed_at":"2025-04-05T00:36:22.000Z","size":135,"stargazers_count":6,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-05T01:24:10.907Z","etag":null,"topics":["database-management","dotnet","multitenancy","nuget","sql-server","tsql"],"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/chizer1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2025-01-25T13:55:45.000Z","updated_at":"2025-04-05T00:27:51.000Z","dependencies_parsed_at":"2025-02-12T04:25:10.591Z","dependency_job_id":"5423bfa1-d36f-46fa-af77-19f43eb1489f","html_url":"https://github.com/chizer1/DbLocator","commit_stats":null,"previous_names":["chizer1/dblocator"],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chizer1%2FDbLocator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chizer1%2FDbLocator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chizer1%2FDbLocator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chizer1%2FDbLocator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chizer1","download_url":"https://codeload.github.com/chizer1/DbLocator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247492549,"owners_count":20947545,"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":["database-management","dotnet","multitenancy","nuget","sql-server","tsql"],"created_at":"2025-02-12T20:19:57.102Z","updated_at":"2025-07-17T20:38:32.410Z","avatar_url":"https://github.com/chizer1.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DbLocator\n\nDbLocator is a .NET library that simplifies database interactions for multi-database tenant applications on SQL Server.\n\n## 📊 Architecture\n\n```mermaid\ngraph TD\n    %% Groups\n    subgraph DbLocator\n\n        subgraph Tenants\n            T1[Acme Corp]\n            T2[Beta Corp]\n            T3[Gamma Corp]\n        end\n\n        subgraph Database Types\n            DT1[Client]\n            DT2[Reporting]\n        end\n\n        subgraph Database Servers\n            S1[Database Server 1]\n            S2[Database Server 2]\n        end\n\n        subgraph Databases\n            D1[Acme_Client]\n            D2[Acme_Reporting]\n            D3[Beta_Client]\n            D4[Beta_Reporting]\n            D5[Gamma_Client]\n            D6[Gamma_Reporting]\n        end\n\n    end\n\n    T1 --\u003e DT1\n    T1 --\u003e DT2\n    T2 --\u003e DT1\n    T2 --\u003e DT2\n    T3 --\u003e DT1\n    T3 --\u003e DT2\n\n    DT1 --\u003e D1\n    DT2 --\u003e D2\n    DT1 --\u003e D3\n    DT2 --\u003e D4\n    DT1 --\u003e D5\n    DT2 --\u003e D6\n\n    %% Database to Server mapping\n    D1 --\u003e S1\n    D2 --\u003e S1\n    D3 --\u003e S1\n    D4 --\u003e S1\n    D5 --\u003e S2\n    D6 --\u003e S2\n```\n\n## 📚 Documentation\n\nFull documentation is available at [https://chizer1.github.io/DbLocator](https://chizer1.github.io/DbLocator)\n\n## 🚀 Quick Start\n\n### Installation\n\nThe package is available on [NuGet](https://www.nuget.org/packages/DbLocator):\n\n```bash\ndotnet add package DbLocator\n```\n\n### Basic usage\n\n```csharp\nvar connectionString = \"{yourConnectionString}\";\nvar dbLocator = new Locator(connectionString);\n\nvar tenantCode = \"Acme\";\nvar tenantId = await dbLocator.CreateTenant(\n    tenantName: \"Acme Corp\",\n    tenantCode: tenantCode,\n    tenantStatus: Status.Active\n);\n\nvar databaseTypeName = \"Client\";\nvar databaseTypeId = await dbLocator.CreateDatabaseType(databaseTypeName: databaseTypeName);\n\nvar databaseServerId = await dbLocator.CreateDatabaseServer(\n    databaseServerName: \"Database Server\",\n    databaseServerHostName: \"localhost\",\n    databaseServerIpAddress: null,\n    databaseServerFullyQualifiedDomainName: null,\n    isLinkedServer: false\n);\n\nvar databaseId = await dbLocator.CreateDatabase(\n    databaseName: $\"{tenantCode}_{databaseTypeName}\",\n    databaseServerId: databaseServerId,\n    databaseTypeId: databaseTypeId,\n    affectDatabase: true,\n    useTrustedConnection: true\n);\n\nawait dbLocator.CreateConnection(\n    tenantId: tenantId,\n    databaseTypeId: databaseTypeId\n);\n\nusing var connection = await dbLocator.GetConnection(\n    tenantId: tenantId,\n    databaseTypeId: databaseTypeId\n);\n\nusing var command = connection.CreateCommand();\ncommand.CommandText = \"SELECT * FROM Users\";\n\nusing var reader = await command.ExecuteReaderAsync();\nwhile (await reader.ReadAsync())\n    Console.WriteLine($\"User: {reader[\"Name\"]}\");\n```\n\n## 📖 Examples\n\n- [DbLocatorExample](https://github.com/chizer1/DbLocatorExample)\n- [aspire-multi-tenant-starter](https://github.com/chizer1/aspire-multi-tenant-starter)\n\n## 🤝 Contributing\n\nI welcome contributions! Here's how you can help:\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\nPlease read [Contributing Guidelines](CONTRIBUTING.md) for more details.\n\n## 📝 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchizer1%2Fdblocator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchizer1%2Fdblocator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchizer1%2Fdblocator/lists"}