Oracle.EntityFrameworkCore ile Db-First

Merhaba,

Bu yazımızda oracle veri tabanında ef core ile db first yaklaşımını göreceğiz.

Senaryo şu =>

  • oracle üzerinde bir database’imiz var
  • bu database üzerinde çalışacak bir uygulama yapacağız

Bu yazıda amacımız sadece oracle tablolarını, varlıklara nasıl dönüştüreceğiz üzerine olacak.

  • Visual studio da bir console uygulaması açılır.
  • Microsoft.EntityFrameworkCore.Tools (8.0..) paketi ile Oracle.EntityFrameworkCore (8.21…) paketleri projeye eklenir. (nuget package)
  • PMC (package manager console) üzerinde entityframework core ile, var olan veritabanını varlıklara çevirmek için kullanılan “scaffold-dbcontext” cli (komut satırı aracı) komutunu kullanılır

Örnek olarak şu şekilde;

Scaffold-DbContext "connection string" providerName -OutputDir Models

provider name => kullanılan veri tabanına göre değişiyor;

sql server için => Microsoft.EntityFrameworkCore.SqlServer

oracle için => Oracle.EntityFrameworkCore

OutputDir komutu ise varlıkların nereye çıkarılacağını gösteriyoruz.

1-)

Örneğin aşağıdaki şekilde kullanırsak AA.BB.CC.DD sunucusunda DbName isimli database üzerindeki tüm varlıkları (view vs dahil) Models klasörü altına atar

Scaffold-DbContext "User Id=XX;Password=YY;Data Source =AA.BB.CC.DD/DbName Oracle.EntityFrameworkCore -OutputDir Models

2-)

Database deki tabloların kolonlarında eğer kısıtlar kurallar vs varsa, bunu kurallarla birlikte varlıklara çevirebilmek için data annotation ları da ekleyebiliriz. Bu durumda komut satırı şu şekilde değişir;

Scaffold-DbContext "User Id=XX;Password=YY;Data Source =AA.BB.CC.DD/DbName Oracle.EntityFrameworkCore --dataAnnotations -OutputDir Models

3-)

Eğer sadece belirli tabloları almak istiyor ise;

Scaffold-DbContext "User Id=XX;Password=YY;Data Source =AA.BB.CC.DD/DbName Oracle.EntityFrameworkCore --dataAnnotations -t ORDERS,ADDRESS,CUSTOMERS -OutputDir Models

komut satırına -t (table) ekledikten sonra tabloları virgül ile ayırarak bunu sağlayabiliriz.

Varlıkları projeye aldıktan sonra üzerlerinde değişiklik yapabiliriz, veri tabanında büyük harflerle yazılı olan tablo isminin varlık ismini de büyük harfle yazmak veya oluşan context dosyasını başka bir klasör altına veya library altına almak veya oluşan context dosyasının ismini değiştirmek gibi.

Bunları yaptıktan sonra tabi “Sync Namespaces” yapma ihtiyacı doğabilir.

Context sınıfına sahip olduktan sonra hangi design pattern ile devam edilecekse proje altında repolar vs oluşturulur.

…..

Yorum bırakın