Skip to content

SahikaErcan/ReCapProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ReCapProject

'Araba Kiralama Sistemi' çok katmanlı ve SOLID prensiplerine dayalı bir projedir.

  • Kurumsal bir projeye başlarken Blank Solution (Boş Çözüm) şeklinde projemizi oluşturuyoruz. . Bir çözüm, birbirleri ile ilişkili projeleri (DataAccess,Business gibi.) düzenlemek için kullanılan bir kapsayıcıdır.

Blank Solution (Boş Çözüm) : Adına rağmen çözüm bir "yanıt" değildir. Bir çözüm, yalnızca bir veya daha fazla ilgili projeyi düzenlemek için Visual Studio tarafından kullanılan bir kapsayıcıdır. Visual Studio 'da bir çözüm açtığınızda, çözüm içerdiği tüm projeleri otomatik olarak yükler.

  • Oluşturduğumuz boş çözüme katmanlar(projeler) ekliyoruz. Proje oluştururken "Class Library(.NET Standard)" standardını seçerek Entities, DataAccess ve Business olarak isimlendirdiğimiz katmanları oluşturuyoruz. Projeyi test etme amacıyla ConsoleUI olarak isimlendirdiğimiz "Console App(.Net Core)" oluşturuyoruz.

Katmalar

xx1

DataAccess (Veri Erişim Katmanı) : Sadece veriye erişmek için gerekli kodlar yazılır. Veriye erişmek için farklı teknikler vardır. İhtiyaca bağlı farklı teknikler kullanmak durumunda kalabiliriz. Uygulamada yapacağımız teknik değişikliklerden diğer projelerin etkilenmesi ve istenilen kod bloğuna erişim kolaylığı sağlamak amacı ile katmanlar kullanıyoruz.
Business (İş Katmanı) : Kuralları yazdığımız yer.
Entities (Yardımcı Katman) : Tüm katmanlarda kullanabileceğimiz yapıları bu katmanda bulundururuz.
ConsoleUI (API) : Business, DataAccess ve Enities katmanlarını API katmanı ile dış dünyaya aktarırız.

🌀 DataAccess 👉 Entities ile

🌀 Business 👉 DataAccess ve Entities ile

🌀 ConsoleUI 👉 DataAccess, Entities ve Business ile ilişkilidir.

ConsoleUI hariç tüm katmanlara Abstract ve Concrete klasörleri ekliyoruz.

xx2

Abstract : Soyut nesneleri ekleyeceğiz onlar bizim referans tutucularımız olacak. Yani interface'leri, abstract nesneleri ve base classları bu klasörün içine ekleyeceğiz.
Concrete : Somut nesneleri yani gerçek işi yapan class'ları bu klasörün içine ekleyeceğiz. Bu sınıflar bir veritabanı tablosuna karşılık gelir.

❗ Oluşturduğumuz class'ları "public" yapmalıyız ki diğer katmanlar da bu class'lara erişim hakkı kazansınlar. Çünkü DataAccess ürünü ekleyecek ise Business ürünü kontrol edecektir. ConsoleUI de ürünü gösterecektir.

DATABASE

xx4

Create table Brands(
	BrandId	 int Primary key,
	BrandName varchar(50)
)
Create table Colors(
	ColorId	 int Primary key,
	ColorName varchar(20)
)
Create table Cars(
	Id int Primary key identity,
	BrandId int,
	ColorId int,
	ModelYear int,
	DailyPrice decimal,
	Descriptions varchar(200),
	Foreign key(ColorId) References Colors(ColorId),
	Foreign key(BrandId) References Brands(BrandId)
)
Insert into Brands(BrandId,BrandName) values (1,'Audi'),(2,'BMW'),(3,'Hyundai'),(4,'Mitsubishi'),(5,'Nissan'),(6,'Mazda'),(7,'Porsche');

Insert into Colors(ColorId,ColorName) values (1,'Black'),(2,'White'),(3,'Silver'),(4,'Blue'),(5,'Red'),(6,'Brown'),(7,'Green');

Insert into Cars(BrandId,ColorId,ModelYear,DailyPrice,Description) values
(1,5,'2020',450,'AUDI Q8 - Red'),
(2,2,'2018',370,'BMW 2 Gran Coupé - White'),
(3,4,'2015',250,'HYUNDAI i10 - Blue'),
(4,7,'2016',290,'Mitsubishi Outlander - Green'),
(5,6,'2017',350,'NISSAN QASHQAI - Brown'),
(6,3,'2019',630,'MAZDA CX-5 - Silver'),
(7,1,'2021',720,'PORSCHE P911 Turbo S - Black');

Entity Framework

Entity Framework Microsoft tarafından geliştirilmiş ORM (Object Relational Mapping) araçlarından biridir. ORM ise İlişkisel veritabanı ile nesneye yönelik programlama(OOP) arasında bir köprü görevi gören araçtır.Entity Framework, ADO.NET için açık kaynaklı bir nesne ilişkisel eşleme (ORM) çerçevesidir.İçerisinde UnitOfWork design pattern’nini barındırmaktadır. UnitOfWork ise yapılan her değişkliğin anlık olarak veritabanına yansıması yerine, bu işlemlerin toplu halde tek bir kanal üzerinden gerçekleşmesini sağlar.

👍 Avantajları

OOP olarak kod geliştirmemize olanak tanır.

Hiçbir SQL bilgisi olmayan bir kimse veritabanı işlemlerini EF ile gerçekleştirebilir.

Herhangi bir veritabanına bağımlılık yoktur. Oracle, MS SQL ile kullanılabilir.

Code First sayesinde projenizi veritabanınızı taşıma gereği duymadan istediğiniz yerde oluşturabilirsiniz. Buda projelerinize büyük bir esneklik sağlamaktadir.

Yazılım geliştirme zamanını ve maaliyetini azaltır.

👎 Dezavantajları

En büyük sorunumuz performans. Ado.Net gibi hızlı bir performansı yoktur. Tabi bu yavaş olduğu anlamına gelmez.

Veritabanından veri alış-verişi yapılacağı zaman kontrol bizde değil Entity Frameworktedir. Yani arka planda veritabanı işlemleri için kendisi sorgular oluşturmaktadır. Basit bir veri işlemi için karmaşık bir sorgu gönderebilmektedir. Bu Sorguları SQL Server Profiler ile görüntüleyebilmektesiniz.

Entity Framework Kurulumu

EntityFramework ORM aracı bir NuGet paketidir. NuGet, .Net platformu ile yazılım geliştirirken kullanılan harici paketlerin yönetimini sağlar.Visual Studio ortamında projeye sağ tık yapıp Manage NuGet Packages seçeneği ile Microsoft.EntityFrameworkCore.SqlServer'ı seçip gerekli version ayarlarını yaparak kurulumunu gerçekleştirebiliriz.

aaa

Bu DataAccess içinde EntityFramework kullanabiliriz demektir.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages