# ORM ve Entity Framework Nedir?

## ORM

İlişkisel veri tabanındaki bir tabloyu uygulama tarafındaki bir object ile ilişkilendiren bir yapıdır.

## Entity Framework

.Net uygulamalarında kullanılan bir ORM türüdür.&#x20;

EF yi uygulamamıza dahil ettikten sonra, EF hangi database türü (MSSQL, MySQL, SQLite, Oracle) ile çalışacaksa o database türünü anlayacak ve iletişimimizi sağlayacak bir provider ı da uygulamaya kurmak gerekir. EF ile çalışırken database e direk müdahalede bulunmamıza gerek yok. EF ile uygulama üzerinden gerekli sql işlemlerini yapabiliriz. O yüzden database türü önemli değildir.

EF, de veri tabanı yönetimi **LINQ** sorguları ile yapılır. **LINQ** sorguları database e iletilmeden EF Core tarafından **SQL** koduna dönüştürülür.

**Context** class ındaki bir liste, database deki aynı isimde bulunan bir tablo ile map edilir (eşleştirilir).\
Örneğin;\
DbSet Student {get; set;} (List) <-----> Student (Table)

### Code Firts

EF Core da yazdığımız bir connection string (veritabanı bağlantısı) yapıldığı zaman verilen adreste bir database yok ise bu durumda o adreste database kendi başına oluşur. Context listesinde oluşturulan list ler tarafından database ve tabloların otomatik olarak oluşturulmasıdır.

### Database Firts

EF Core da yazdığımız bir connection string (veritabanı bağlantısı) yapıldığı zaman verilen adreste bir database in olması ve o database in kullanılmaya başlanmasıdır.

## Provider (Driver)

Bir database serverına bir uygulama üzerinden bağlanmak için kullanılan yapıya denir.

## Context (Context Class)

Entity Framework ile kullanılan Context, veri tabanı işlemlerinin yürütüldüğü class tır. **`DbContext`** class ından türetilir. Context class ı içierisinde **`DbSet<>`** türünde list tanımlamaları yapılır.

{% hint style="warning" %}
Entity Framework uygulamasının çalışması için;

* Bir providerın yüklü olamsı gerekmektedir.
* Dotnet-ef nin kurulu olması gerekmektedir.
* Microsoft.EntityFrameworkCore.Design kütüphenesinin kurulu olması gerekmektedir.

Migrations oluşturmak için;

* dotnet ef migrations add MigtareAdı

Veri tabanı oluşturmak için (Bekleyen tüm Migration ları uygulamak için);&#x20;

* dotnet ef database update
  {% endhint %}
