Çok katmanlı kurumsal mimaride hazırlanmış bir günlük araba kiralama projesidir.
Tabloları oluşturmak için gerekli SQL dosyası.
Veritabanı tablolarına denk gelen entitylerin API, Console veya UI projeleri için kullanılan request/response modellerinin ve DTO(Data transfer object) larının bulunduğu katmandır
Veri erişim katmanıdır. Veritabanı işlemlerinin (CRUD Operations) gerçekleştirildiği katmandır.
İş kodlarımızı bu katmanda yazıyoruz. DataAccess in veritabanından aldığı verileri işleyip kontrolden geçiren katmandır.
Verilerin gösterilecegi katmandır. Bu bir API olabilir yada bir Console. Bizim projemizde ConsoleUI ve API katmanları mevcut dilediğinizi başlangıç projesi olarak seçip ayaga kaldırabilirsiniz.
Projenin son halindeki mevcut veritabanı tabloları;
💾 dbo.Brands
CREATE TABLE [dbo].[Brands] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] VARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
💾 dbo.Cars
CREATE TABLE [dbo].[Cars] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[BrandId] INT NOT NULL,
[ColorId] INT NOT NULL,
[ModelYear] VARCHAR (50) NOT NULL,
[DailyPrice] DECIMAL (18) NOT NULL,
[Description] VARCHAR (MAX) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
💾 dbo.Colors
CREATE TABLE [dbo].[Colors] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] VARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
💾 dbo.Customers
CREATE TABLE [dbo].[Customers] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[UserId] INT NOT NULL,
[CompanyName] VARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
💾 dbo.Rentals
CREATE TABLE [dbo].[Rentals] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[CarId] INT NOT NULL,
[CustomerId] INT NOT NULL,
[RentDate] DATETIME NULL,
[ReturnDate] DATETIME NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
💾 dbo.Users
CREATE TABLE [dbo].[Users] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[FirstName] VARCHAR (50) NOT NULL,
[LastName] VARCHAR (50) NOT NULL,
[Email] VARCHAR (50) NOT NULL,
[Password] VARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
Swagger bize hem API endpointlerimizi test etmemize olanak sağlıyor hemde yazdıgımız Controllers lar için bir dökümantasyon oluşturuyor. Bir yazılım geliştirme sürecinde yapılan işin dökümante edilebilmesi en önemli husulardan.