EF 7 – Reverse Engineering

Entity Framework 7 ile birlikte, Database-First olarak adlandırılan, mevcut veritabanından edmx üretme ile kullanılan yöntem son bulmuş oldu. Fakat benim gibi, database first kullanmasanızda, direk code first olarak modelleri ve context’i kendiniz oluşturmak istemeye bilirsiniz. Aslında sizin bir reverse engineer’a ihtiyacınız bulunmakta. EF 6 ile kullanıla bilen bir visual studio eklentisi ile bu işi yapabiliyorduk, yani mevcut veritabanından ilgili model, mapping ve context’i üretebiliyorduk. (https://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d)

EF 7 ve .Net Core 1.0 ile birlikte hayatımıza girmeye başlayan yeni yaklaşımlardan biri command tool’lar oldu. Artık diğer bazı dillerde olduğu gibi komut ekranından bir çok işlemi yapabilmemiz mümkün hale geliyor. Bu command line tool özelliklerinden bizim kullanacağımız ise “EntityFramework.Commands” özelliği. Adım adım ilerleyecek olursak;

  • Sisteminizde .Net Core 1.0 ile birlikte RC1 kurulu olmalı (https://go.microsoft.com/fwlink/?LinkId=627627)
  • Projeniz project.json dosyasında aşağıda ki command ve paketler olmalı;
  • "dependencies": {"EntityFramework.Core": "7.0.0-rc1-final", // core EF7
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final", // MSSQL provider for EF7
    "EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final", // MSSQL design tools required for database rev eng
    "EntityFramework.Relational": "7.0.0-rc1-final", // shared between relational stored in EF7
    "EntityFramework.Relational.Design": "7.0.0-rc1-final",
    "EntityFramework.Commands": "7.0.0-rc1-final" // EF7 dnx command line interface commands
    },"commands": {
    "ef": "EntityFramework.Commands"
    }

dnvm

  • Bir command promt açın (cmd.exe) ve “dnvm” komutunu yazın.
  • solda ki ekran görüntüsünde  de göreceğiniz üzere dnvm’i göreceksiniz.
  • bu adımda “dnvm upgrade” komutu vererek, dnvm’ i güncellemeniz ve command-line araçlarının aktifleştirmesini sağlamanız gerekiyor.

 

dnx

  • dnvm’i upgrade ettikten sonra, Dnx (.Net Execution Environment)’ ı çalıştırmanız gerekiyor. Eğer başarılı bir dnvm upgrade işlemi yaptıysanız, dnx komutu sonucu yanda ekranı göreceksiniz.
  • dnx komutunu başarıyla gördüyseniz, “dnx ef” komutu için projenizin içerisine gitmelisiniz, project.json dosyasının olduğu dizine.
  • dnxef
  • İlgili dizine girince “dnx ef” komutuyla entity framework commant tool’u görmüş oluyoruz.
  • göreceğiniz üzere, database, dbcontext ve migrations komutları mevcut, biz dbcontext üreteceğimiz için aşağıda ki komutu çalıştırıyoruz;
  • dnx ef dbcontext scaffold "server=ServeName;database=DBNAME;user id=sa;password=PassWord" EntityFramework.MicrosoftSqlServer -a -c "DbContextName" -o Model

Komutu verdikten sonra ilgili model ve context’in projenizde üretildiğini göreceksiniz. EF 6 kullanıcıları için mapping’ler baya değişmiş gelicektir, artık Fluent Api’ye geçiş yapıyoruz, buyrun (https://ef.readthedocs.org/en/latest/modeling/index.html#fluent-api)

RC2 güncellemesiyle birlikte, “dnx” komutunun “dotnet” ile değişiceğinizde dipnıt olarak belirteyim.

Emrah.