ben

OMÜ , Bilgisayar Mühendisliği, 13'

16 Eylül 2022 Cuma

FluentApi Configuration

 Burada modeller üzerinde sql serverda karşılığı olan veri tiplerini değiştirebilir, uniqe özelliği gibi bazı kısıtlayıcı şartlar verebiliriz

Bunun için MAP katmanına Configurations Klasörü açalım ve FluentApi validasyon yazacağımız her bir model için class açalım.

UserConfiguration.cs

public class UserConfiguration : IEntityTypeConfiguration<User>
    {
        public void Configure(EntityTypeBuilder<User> builder)
        {
            builder.HasIndex(x => x.UserName).IsUnique();
            builder.Property(x => x.UserName).HasColumnType("varchar(10)").IsRequired();
            builder.Property(x => x.Password).HasColumnType("varchar(max)").IsRequired();
            builder.Property(x => x.NameSurname).HasColumnType("varchar(100)");
            builder.Property(x => x.Phone).HasColumnType("varchar(11)");
            //Eğer bir propertynin db de oluşmasını istemiyorsak;
            // builder.Ignore("Image");
        }
    }
}

StationConfiguration.cs

public class StationConfiguration:IEntityTypeConfiguration<Station>
    {
        public void Configure(EntityTypeBuilder<Station> builder)
        {
            builder.Property(x => x.StationName).HasColumnType("varchar(100)").IsRequired();
            builder.Property(x => x.Adress).HasColumnType("varchar(max)");
            builder.Property(x => x.Phone).HasColumnType("varchar(11)");
        }
    }

SalesConfiguration.cs
    public class SalesConfiguration:IEntityTypeConfiguration<Sales>
    {
        public void Configure(EntityTypeBuilder<Sales> builder)
        {
            builder.HasIndex(x => x.Plate).IsUnique();
            builder.Property(x => x.Plate).HasColumnType("varchar(12)").IsRequired().HasMaxLength(12);
            builder.Property(x => x.PumpNo).HasColumnType("varchar(2)").IsRequired();
            builder.Property(x => x.TotalPrice).HasColumnType("Money");
        }
    }

PaymentConfiguration.cs
 public class PaymentConfiguration : IEntityTypeConfiguration<Payment>
    {
        public void Configure(EntityTypeBuilder<Payment> builder)
        {
            builder.Property(x => x.Ptype).IsRequired();
        }
    }

GasConfiguration.cs
 public class GasConfiguration:IEntityTypeConfiguration<Gas>
    {
        public void Configure(EntityTypeBuilder<Gas> builder)
        {
            builder.Property(x => x.GasTypes).IsRequired();
            builder.Property(x => x.Prince).IsRequired();
        }
    }

DAL Katmanındaki MyModelContext.cs  içerisindeki OnModelCreating methodu içerisine;

    modelBuilder.ApplyConfiguration(new UserConfiguration());
    modelBuilder.ApplyConfiguration(new StationConfiguration());
    modelBuilder.ApplyConfiguration(new SalesConfiguration());
    modelBuilder.ApplyConfiguration(new PaymentConfiguration());
   modelBuilder.ApplyConfiguration(new GasConfiguration());


Bir sonraki yazıda bu Configuration modellerinde Foreign Key ve ilişki tanımlamalarını yapacağız..

Hiç yorum yok: