Introduction
In this article, we will build a Vehicle Rental Management System using C#, Entity Framework Core, SQL Server, and a layered architecture approach. The application demonstrates authentication, vehicle rental management, customer registration, session handling, email notifications, and database operations using Entity Framework Core.
The project follows a multi-layered architecture consisting of:
DAL (Data Access Layer)
BLL (Business Logic Layer)
UI Layer
Shared Utilities
Prerequisites
Before starting, ensure you have the following installed:
.NET SDK
SQL Server
Visual Studio
Entity Framework Core Tools
Required NuGet Packages
Install the following packages:
Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools
Install-Package Microsoft.EntityFrameworkCore.Design
Configuration Packages
Install-Package Microsoft.Extensions.Configuration
Install-Package Microsoft.Extensions.Configuration.Json
Install-Package Microsoft.Extensions.Configuration.FileExtensions
Install-Package Microsoft.Extensions.FileProviders.Physical
Console UI Packages
Install-Package Spectre.Console
Install-Package ConsoleTables
Database Commands
Add-Migration InitialCreate
Update-Database
Project Structure
The solution is organized into the following layers:
DAL
├── Context
├── Entities
├── Repository
BLL
├── Interfaces
├── Services
UI
├── Views
Shared
├── Constants
├── Enums
├── ResultWrapper
Utilities
├── Validators
├── SessionManager
├── EmailSender
Database Configuration
The application uses Entity Framework Core with SQL Server.
appsettings.json
{
"ConnectionStrings": {
"DefaultConnection": "Data Source=DELL,51434;Initial Catalog=Ayush;Persist Security Info=True;User ID=Ayush;Password=Ayush;Encrypt=True;TrustServerCertificate=True;"
}
}
Application DbContext
The AppDbContext is responsible for:
Database connectivity
Entity relationships
Seed data
Table mappings
Features Implemented
User ↔ Customer One-to-One Relationship
Customer ↔ Rental One-to-Many Relationship
Vehicle ↔ Rental One-to-Many Relationship
Seeded Users
Seeded Vehicles
// AppDbContext Code Here
Session Management
To maintain the current logged-in user during runtime, a simple session manager is used.
Responsibilities
Store logged-in user
Logout user
Check login status
Verify admin access
// SessionManager Code Here
Email Validation
Before registration or login, email addresses are validated using regular expressions.
Validation Features
Empty email check
Email format validation
Password presence validation
// EmailValidator Code Here
Console Application Entry Point
The application starts from Program.cs.
Join the conversation! Your thoughts help the community grow.