Entity Framework Core 2.0 artık IEntityTypeConfiguration arabirimini sağlıyortek bir varlık türü için ayrı bir yapılandırma sınıfı uygulamak için kullanılabilir.
Daha büyük nesne modelleri için, akıcı API yapılandırması yöntemde olabilir. OnModelCreating() Entity Framework Core bağlam sınıfında çok hızlı bir şekilde çok büyüyebilir. Entity Framework Core 2.0’dan önce (14.08.2017’de yayınlandı) sınıfı kullanmak mümkündü OnModelCreating() alt programlara ayrılmıştır.
Entity Framework Core 2.0 ile Microsoft, başka bir yapılandırma seçeneği sunmuştur: yapılandırmanın dış kaynak kullanımına dayalı olarak EntityTypeConfiguration Klasik Entity Framework’teki mevcut sınıfları devralan Entity Framework Core, artık arayüzü sağlar IEntityTypeConfigurationbir varlık türü için ayrı bir yapılandırma sınıfı uygulamak için kullanılabilir.
using GO;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace EFC_Kontext
{
/// <summary>
/// Konfigurationsklasse für Entitätsklasse Flug
/// Möglich ab EFCore 2.0
/// </summary>
class FlugETC : IEntityTypeConfiguration<Flug>
{
public void Configure(EntityTypeBuilder<Flug> f)
{
// ----------- Schlüssel
f.HasKey(x => x.FlugNr);
f.Property(x => x.FlugNr).ValueGeneratedNever();
// ----------- Längen und Null-Werte
f.Property(x => x.Memo).HasMaxLength(5000);
f.Property(x => x.Plaetze).IsRequired();
// ----------- Berechnete Spalte
f.Property(x => x.Auslastung)
.HasComputedColumnSql("100.0-(([FreiePlaetze]*1.0)/[Plaetze])*100.0");
// ----------- Standardwerte
f.Property(x => x.Preis).HasDefaultValue(123.45m);
f.Property(x => x.Abflugort).HasDefaultValue("(offen)");
f.Property(x => x.Zielort).HasDefaultValue("(offen)");
f.Property(x => x.Datum).HasDefaultValueSql("getdate()");
// ----------- Indexe
// Index über eine Spalte
f.HasIndex(x => x.FreiePlaetze).HasName("Index_FreiePlaetze");
// Index über zwei Spalten
f.HasIndex(x => new { x.Abflugort, x.Zielort });
}
}
}
Bu konfigürasyon sınıfı daha sonra ile birlikte kullanılır. modelBuilder.ApplyConfiguration(yapılandırma nesnesi) içine OnModelCreating() dahil:
modelBuilder.ApplyConfiguration<Flug>(new FlugETC());
Ana akım ürün dünyasında sıklıkla olduğu gibi, dokümantasyon uygulamanın gerisinde kalıyor. İşte bu IEntityTypeConfiguration “Yeni Özellikler” belgesinde kısaca bahsedilmiştir, ancak belgelerde başka şekilde mevcut değildir.
()
Haberin Sonu
Daha büyük nesne modelleri için, akıcı API yapılandırması yöntemde olabilir. OnModelCreating() Entity Framework Core bağlam sınıfında çok hızlı bir şekilde çok büyüyebilir. Entity Framework Core 2.0’dan önce (14.08.2017’de yayınlandı) sınıfı kullanmak mümkündü OnModelCreating() alt programlara ayrılmıştır.
Entity Framework Core 2.0 ile Microsoft, başka bir yapılandırma seçeneği sunmuştur: yapılandırmanın dış kaynak kullanımına dayalı olarak EntityTypeConfiguration Klasik Entity Framework’teki mevcut sınıfları devralan Entity Framework Core, artık arayüzü sağlar IEntityTypeConfigurationbir varlık türü için ayrı bir yapılandırma sınıfı uygulamak için kullanılabilir.
using GO;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace EFC_Kontext
{
/// <summary>
/// Konfigurationsklasse für Entitätsklasse Flug
/// Möglich ab EFCore 2.0
/// </summary>
class FlugETC : IEntityTypeConfiguration<Flug>
{
public void Configure(EntityTypeBuilder<Flug> f)
{
// ----------- Schlüssel
f.HasKey(x => x.FlugNr);
f.Property(x => x.FlugNr).ValueGeneratedNever();
// ----------- Längen und Null-Werte
f.Property(x => x.Memo).HasMaxLength(5000);
f.Property(x => x.Plaetze).IsRequired();
// ----------- Berechnete Spalte
f.Property(x => x.Auslastung)
.HasComputedColumnSql("100.0-(([FreiePlaetze]*1.0)/[Plaetze])*100.0");
// ----------- Standardwerte
f.Property(x => x.Preis).HasDefaultValue(123.45m);
f.Property(x => x.Abflugort).HasDefaultValue("(offen)");
f.Property(x => x.Zielort).HasDefaultValue("(offen)");
f.Property(x => x.Datum).HasDefaultValueSql("getdate()");
// ----------- Indexe
// Index über eine Spalte
f.HasIndex(x => x.FreiePlaetze).HasName("Index_FreiePlaetze");
// Index über zwei Spalten
f.HasIndex(x => new { x.Abflugort, x.Zielort });
}
}
}
Bu konfigürasyon sınıfı daha sonra ile birlikte kullanılır. modelBuilder.ApplyConfiguration(yapılandırma nesnesi) içine OnModelCreating() dahil:
modelBuilder.ApplyConfiguration<Flug>(new FlugETC());
Ana akım ürün dünyasında sıklıkla olduğu gibi, dokümantasyon uygulamanın gerisinde kalıyor. İşte bu IEntityTypeConfiguration “Yeni Özellikler” belgesinde kısaca bahsedilmiştir, ancak belgelerde başka şekilde mevcut değildir.
()
Haberin Sonu