Sqlist.NET
2.0.0
dotnet add package Sqlist.NET --version 2.0.0
NuGet\Install-Package Sqlist.NET -Version 2.0.0
<PackageReference Include="Sqlist.NET" Version="2.0.0" />
paket add Sqlist.NET --version 2.0.0
#r "nuget: Sqlist.NET, 2.0.0"
// Install Sqlist.NET as a Cake Addin #addin nuget:?package=Sqlist.NET&version=2.0.0 // Install Sqlist.NET as a Cake Tool #tool nuget:?package=Sqlist.NET&version=2.0.0
Introduction
Project Overview
Sqlist.NET is an advanced Object/Relational Mapping (O/RM) framework designed to streamline the interaction between .NET applications and relational databases. Built on the robust foundations of ADO.NET, it provides an abstraction API that allows developers to perform database operations without writing raw SQL queries, thereby simplifying the development process. The framework is built to support future integrations with various RDBMS providers, ensuring extensibility and flexibility. As of now, PostgreSQL is the officially supported database, with plans to integrate more RDBMS providers in the future.
Purpose
The primary purpose of Sqlist.NET is to offer a robust and scalable O/RM solution that abstracts the complexities of database interactions. This framework aims to:
- Simplify CRUD (Create, Read, Update, Delete) operations by providing a high-level API.
- Enhance productivity by reducing the amount of boilerplate code needed for database interactions.
- Enable seamless database migrations through a combination of SQL scripts and schema mapping written in YAML.
- Support dynamic database schema changes and versioning to accommodate evolving application requirements.
- Provide a dotnet CLI tool for managing database migrations directly from the project's directory, akin to Entity Framework Core Migration Tools.
- Facilitate the integration of multiple database providers, starting with PostgreSQL, to cater to diverse application needs.
- Ensure high performance and reliability for enterprise-level applications.
By leveraging Sqlist.NET, developers can focus more on business logic and less on the intricacies of database management, leading to faster development cycles and more maintainable codebases.
Key Features
- Abstraction API: Provides a simplified interface for interacting with databases.
- Provider Support: Official integration with PostgreSQL, with the potential for more RDBMS integrations.
- Database Migrations: Combines SQL scripts and YAML-based schema mappings for robust migration support.
- Dotnet CLI Tool: Facilitates migrations and other database operations directly from the project directory.
- Modular Architecture: Organized into multiple assemblies, each responsible for specific functionalities, promoting maintainability and scalability.
- Extensibility: Designed to accommodate additional RDBMS providers and extend core functionalities as needed.
Contributing
Guidelines
- Follow the coding standards specified in the repository.
- Ensure all new code is covered by unit tests.
- Submit pull requests to the dev branch.
Issues and Bugs
- Report issues using the GitHub Issues tab.
- Provide a detailed description and steps to reproduce the issue.
Pull Requests
- Fork the repository and create a new branch for your feature or bug fix.
- Ensure your code follows the project’s coding standards.
- Submit a pull request with a detailed description of your changes.
Architecture
Overview:
Sqlist.NET is structured into multiple assemblies, each responsible for a specific aspect of the framework. The architecture leverages ADO.NET to interact with databases at a lower level, ensuring robust and efficient data handling.
Components
- Core: Core O/RM functionalities.
- Providers: RDBMS-specific implementations (e.g., PostgreSQL).
- Migrations: Tools and libraries for handling database migrations.
Design Decisions
- Separation of concerns through multiple assemblies.
- Use of YAML for migration roadmaps to simplify schema definition and versioning.
Deployment
Environments
- Development: Local development setup with a local PostgreSQL instance.
- Staging: Pre-production environment for testing.
- Production: Live environment with production-grade PostgreSQL.
Steps
- Configure connection strings and environment variables for each environment.
- Use CI/CD pipelines to automate deployment processes.
FAQ
Common Issues
- Connection Issues: Ensure your connection string is correct and the database server is accessible.
- Migration Failures: Check the syntax and format of your YAML roadmap.
Tips and Tricks
- Use logging to debug issues with migrations and database operations.
- Regularly back up your database before applying migrations.
License
Type
Apache License, Version 2.0
Terms
- Free to use, modify, and distribute.
- Include the original copyright notice in any copies or substantial portions of the software.
- You may not use this file except in compliance with the License.
- Distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the Apache-2.0 License for the specific language governing permissions and limitations under the License.
Appendix
Glossary
- O/RM: Object/Relational Mapping
- RDBMS: Relational Database Management System
- YAML: YAML Ain't Markup Language
- ADO.NET: ActiveX Data Objects for .NET, a set of classes that expose data access services for .NET Framework programmers.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net8.0
- FastMember (>= 1.5.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 7.0.0)
- Sqlist.NET.Abstraction (>= 1.0.0)
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Linq.Async (>= 6.0.1)
- System.Text.Json (>= 7.0.2)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Sqlist.NET:
Package | Downloads |
---|---|
Sqlist.NET.Migration
Migration tools for Sqlist.NET |
|
Sqlist.NET.PostgreSQL
PostgreSQL specific implementations for Sqlist.NET |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.0.0 | 124 | 9/15/2024 |
2.0.0-beta.2 | 46 | 7/5/2024 |
2.0.0-beta.1 | 51 | 7/3/2024 |