2016-10-25 36 views

cevap

2

Bu soruyu, kendim için aradığımdan beri tökezledim. EF Çekirdeğinde uygulanmadığını (henüz?) Buldum, ancak kendinizi kolayca kolayca uygulanabilir.

Bunlardan birini oluşturabilir:

using Microsoft.EntityFrameworkCore.Metadata.Builders; 

namespace Microsoft.EntityFrameworkCore 
{ 
    public abstract class EntityTypeConfiguration<TEntity> where TEntity : class 
    { 
     public abstract void Map(EntityTypeBuilder<TEntity> modelBuilder); 
    } 

    public static class ModelBuilderExtensions 
    { 
     public static void AddConfiguration<TEntity>(this ModelBuilder modelBuilder, EntityTypeConfiguration<TEntity> configuration) where TEntity : class 
     { 
      configuration.Map(modelBuilder.Entity<TEntity>()); 
     } 
    } 
} 

Ve sonra varlığın kendisinin bir yapılandırma oluşturabilirsiniz: - muhtemelen orada (

using Microsoft.EntityFrameworkCore; 
using Project.Domain.Models; 
using Microsoft.EntityFrameworkCore.Metadata.Builders; 

namespace Project.Persistance.EntityConfigurations 
{ 
    public class MyEntityConfiguration : EntityTypeConfiguration<MyEntity> 
    { 
     public override void Map(EntityTypeBuilder<MyEntity> modelBuilder) 
     { 
      modelBuilder 
       .Property();//config etc 
     } 
    } 
} 

Ardından yere tüm yapılandırmaları yükleyebilirsiniz hem daha iyi bir yol hem de bunu yapmak için daha iyi bir yer ... ama bu benim yaptığım şeydi: -

using Microsoft.EntityFrameworkCore; 
using Project.Domain.Models; 
using Project.Persistance.EntityConfigurations; 

namespace Project.Persistance 
{ 
    public class MyDbContext : DbContext 
    { 
     // Normal DbContext stuff here 

     protected override void OnModelCreating(ModelBuilder modelBuilder) 
     { 
      modelBuilder.AddConfiguration(new MyEntityConfiguration()); 
     } 
    } 
} 
0

O Çekirdek 2.0 da kolay şimdi db bağlamında Sonra

using Microsoft.EntityFrameworkCore; 
using Microsoft.EntityFrameworkCore.Metadata.Builders; 

namespace MyApp.DAL.EntityConfigurations 
{ 
    public class StudentConfiguration : IEntityTypeConfiguration<Student> 
    { 
     public void Configure(EntityTypeBuilder<Student> modelBuilder) 
     { 

      modelBuilder.Property(f => f.Name).IsRequired(); 

     } 
    } 
} 

:

public DbSet<Student> Students{ get; set; } 

public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } 

protected override void OnModelCreating(ModelBuilder builder) 
{ 
    base.OnModelCreating(builder); 

    // Customizations must go after base.OnModelCreating(builder) 

    builder.ApplyConfiguration(new StudentConfig()); 
    builder.ApplyConfiguration(new SomeOtherConfig()); 

    // etc. 
    // etc.. 
}