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
}