Entity Framework ile uygulama geliştirme aşamasında aşağıdaki yaklaşımlardan birisini kullanabiliriz. Bu yaklaşımlar:
- Database First
- Model First
- Code First
Database First
Eğer hali hazırda bir veri tabanımız varsa ve bu veri tabanı uzun zamandır kullanılıyorsa bu yaklaşım tercih edilir. Bununla çalışabilmek için veri tabanını klasik yöntemlere göre SQL Server üzerinden oluşturmalısınız. (kodla ya da arayüzden)
Bu yöntemde veri tabanı üzerinde herhangi bir değişiklik yapmak istersek, SQL Server üzerinden yapmalıyız. Bu durumun projeye tarafına aktarılması için “update model from database” demek gerekir.
Model First
Eğer bir veri tabanına sahip değilseniz, direk visual studio üzerinden model kullanarak oluşturabilirsiniz. Burada gerçekleştirdiğimiz değişiklikleri SQL’e tanıtmak için “generate database from” tıklamamız gerekir. Eğer kod ya da SQL yazmayı sevmiyorsanız, bu yöntemi tercih edebilirsiniz. Bu yöntemde genellikle kodlama yerine design yaparız.
Projeniz çok sayıda tablo içeriyor ve kompleks bir yapıya sahipse bu yöntem kullanışlı olacaktır. Büyük çaplı kurumsal projelerde tercih edilebilir.
Code First
Eğer kodlama yapmayı çok seviyorsanız ve veri tabanımı kodlama ile oluşturmak istiyorum diyorsanız bu yöntem size göre. Bu yöntemde design yapmak yerine kodlama yapıyorsunuz. Bu yaklaşım ile tüm kontrol elinizde oluyor, diğer yaklaşımlardaki gibi arka tarafta otomatik kodlar üretilmiyor. Yazmış olduğunuz kodlar veri tabanını ve tablolarınızı oluşturacaktır. Tablo sayısı az olan projelerde kullanılması tercih ediliyor.
Code First Örneği (Migrations) :
https://docs.microsoft.com/en-us/ef/ef6/modeling/code-first/migrations/
https://www.slideshare.net/jibranrasheed/learn-entity-framework-in-a-day-with-code-first-model-first-and-database-first?qid=5e47d6ca-eaf2-4240-a05b-31ccf5276fcd&v=&b=&from_search=8
Migration Nedir?
İngilizcede doğrudan kelime anlamı göç, yani şöyle düşünün benim buradaki bilgilerim, kurallarım veritabanına göç ediyor. Böyle hayal edin, tasvir doğru mu oldu bilemiyorum ama uygun gibi. Tam olarak yapılan da bu, uygulamamda dediğim kurallar, model classlar, bağıntıları migration ile anlatıyorum.
Migration 3 adımlı bir işlemdir.
- Öncelikle model oluşturur veya modellerimizde değişiklik yaparız. Bu noktada yeni bir model oluşturmuş olabilirsiniz veya var olan modellerinizde değişiklik yapmış olabilirsiniz. Böyle bir işlem yaptığınızda mutlaka migration ile database tarafına değişiklik yansıtılmalıdır.
- Migration Ekleme işlemi yaparız. Database tarafına değişikliği yansıtabilmek için migration ekleriz. add-migration MigrationAdı
- Migration uygulama işlemi yaparız. Migration uygulamamıza bir isimle eklenince, henüz işlem database yansıdı demek değildir bunu database’e yansıtabilmek için migration’u database’e push etmemiz gerekir. update-database