Model oluşturma ve yapılandırma
Entity Framework Core sınıflarının şekline göre bir model oluşturmak için bir dizi kural kullanır. Kural tarafından bulunanları tamamlar ve/veya geçersiz kılmak için ek yapılandırma belirtsiniz.
Bu makale, herhangi bir veri depolarını hedef alan bir modele uygulanebilecek yapılandırmayı ve ilişkisel bir veritabanını hedeflerken uygulanebilecek yapılandırmayı kapsar. Sağlayıcılar belirli bir veri deposuna özgü yapılandırmayı da etkinleştirebilirsiniz. Sağlayıcıya özgü yapılandırmayla ilgili belgeler için Veritabanı Sağlayıcıları bölümüne bakın.
İpucu
Bu makalenin örneğini daha sonra GitHub.
Fluent API kullanarak modeli yapılandırma
Türetilmiş bağlamınız OnModelCreating içinde yöntemini geçersiz karak modelinizi yapılandırmak için ModelBuilder API kullanabilirsiniz. Bu en güçlü yapılandırma yöntemidir ve yapılandırmanın varlık sınıflarınızı değiştirmeden belirt yapılandırmasını sağlar. Fluent API yapılandırması en yüksek önceliğe sahiptir ve kuralları ve veri ek açıklamalarını geçersiz kılar.
using Microsoft.EntityFrameworkCore;
namespace EFModeling.EntityProperties.FluentAPI.Required
{
internal class MyContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
#region Required
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.Property(b => b.Url)
.IsRequired();
}
#endregion
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
}
}
Gruplama yapılandırması
OnModelCreating yönteminin boyutunu azaltmak için bir varlık türünün tüm yapılandırması IEntityTypeConfiguration TEntity uygulayan ayrı bir sınıfa ayıklanır.
public class BlogEntityTypeConfiguration : IEntityTypeConfiguration<Blog>
{
public void Configure(EntityTypeBuilder<Blog> builder)
{
builder
.Property(b => b.Url)
.IsRequired();
}
}
Ardından yalnızca Configure yönteminden OnModelCreating çağırın.
new BlogEntityTypeConfiguration().Configure(modelBuilder.Entity<Blog>());
Belirli bir derlemede uygulanan türlerde belirtilen tüm IEntityTypeConfiguration yapılandırmaları uygulamak mümkündür.
modelBuilder.ApplyConfigurationsFromAssembly(typeof(BlogEntityTypeConfiguration).Assembly);
Not
Yapılandırmaların uygulanma sırası tanımlanmamıştır, bu nedenle bu yöntem yalnızca sıra önemli değilken kullanılmalıdır.
Modeli yapılandırmak için veri ek açıklamalarını kullanma
Sınıflarınıza ve özelliklerinize öznitelikler (Veri Ek Açıklamaları olarak bilinir) de uygulayabilirsiniz. Veri ek açıklamaları kuralları geçersiz kılar, ancak API yapılandırmasına göre Fluent geçersiz kılınır.
using System.ComponentModel.DataAnnotations;
using Microsoft.EntityFrameworkCore;
namespace EFModeling.EntityProperties.DataAnnotations.Required
{
internal class MyContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
}
#region Required
public class Blog
{
public int BlogId { get; set; }
[Required]
public string Url { get; set; }
}
#endregion
}