Merhaba arkadaşlar, bu yazımda sizlere .Net Core Fluent Api Kullanımı konusundan bahsedeceğim.
Fluent Api, Entity Framework Code First yaklaşımı ile kullanacağımız veri tabanı sınıflarını(entity) ve ilişkilerini yapılandırabilmemizi sağlayan bir yoldur. Entity dosyalarımızda Data Annotation‘ları kullanarak da gerekli işlemleri sağlayabiliriz. Fakat Fluent Api ile bu ayarlamaları yapmamız daha anlaşılır, daha temiz olacaktır. Fluent Api kullanımını sağlamak için ilgili Class dosyalarımızı tanımlayarak içerisinde de tanımlamalarımızı, özelliklerimizi tanımlayacağız.
Bir adet Console projesi açıyoruz. Uygulamayı .Net Core 6 ile oluşturacağım.
Projeyi oluşturduktan sonra içerisine 3 adet klasör eklemesi yapıyoruz.
- Entities
- Data
- Mappings.
Veri tabanı sınıflarımızı Entities klasöründe oluşturacağız. Context sınıfımızı Data klasöründe oluşturacağız. Fluent Api için yazacağımız sınıflarımızı da Mappings klasöründe oluşturacağız.
Öncelikle Entity dosyamızı oluşturuyoruz. Product isminde bir sınıf oluşturacağız.
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
}
Daha sonra Context sınıfımızı oluşturuyoruz.
public class FluentApiContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"ConnectionStringBilginiz");
}
public DbSet<Product> Products { get; set; }
}
Context sınıfımızı da oluşturduk. Şimdi de Fluent Api için sınıfımızı oluşturacağız.
ProductMap isminde aşağıdaki gibi bir sınıf oluşturuyoruz.
public class ProductMap : IEntityTypeConfiguration<Product>
{
public void Configure(EntityTypeBuilder<Product> builder)
{
builder.HasKey(I => I.Id);
builder.Property(I => I.Id)
.UseIdentityColumn();
builder.Property(I => I.Name)
.HasMaxLength(100)
.HasColumnType("varchar")
.IsRequired();
}
}
ProductMap sınıfımız IEntityTypeConfiguration interface’inden miras alarak onun içerisine de Product sınıfımızı yazarak sınıfımız içerisinde Configure metodumuzu yazıyoruz. Sınıfımız içerisinde Id alanının PrimaryKey olacağını ve IdentityColumn yani artan sayı olacağını belirttik. Name alanı için de max. 100 karakter olacağını, kolon tipinin de varchar olacağını ve not null yani boş bırakılamayacağını belirtmiş olduk. Şimdi bu oluşturduğumuz sınıfı Context nesnemiz içerisine ekliyoruz.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new ProductMap());
}
Context nesnemiz içerisinde OnModelCreating metodu içerisinde ProductMap sınıfımızın tanımlamasını sağlıyoruz.
Context sınıfımızın son hali
public class FluentApiContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"ConnectionStringBilginiz");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new ProductMap());
}
public DbSet<Product> Products { get; set; }
}
Tüm bu işlemlerden sonra da Migration işlemlerimizi sağladığımızda belirttiğimiz özelliklerde Product tablomuz oluşturulacaktır. Entity Framework ekleme ve Migration işlemleri ile ilgili detaylı bilgi sahibi olmak isterseniz eğer .NET Core API Entity Framework Ekleme #3 yazıma giderek inceleyebilirsiniz.
Umarım faydalı olur.
Bir sonraki yazıda görüşmek üzere…