2016-10-25 3 views

Antwort

2

Ich habe über diese Frage nur gestolpert, als ich mich für die Antwort gesucht. Ich habe festgestellt, dass es in EF Core (noch?) Nicht implementiert ist, aber selbst relativ einfach implementiert werden kann.

Sie können eine davon erstellen:

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>()); 
     } 
    } 
} 

Und dann können Sie eine Konfiguration für das Unternehmen selbst erstellen: -

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 
     } 
    } 
} 

Sie können dann alle irgendwo Ihre Konfigurationen laden (es gibt wahrscheinlich sowohl eine bessere Art und Weise und zu einem besseren Ort, es zu tun ... aber das ist, was ich tat): -

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

Es ist noch einfacher in Core 2.0 jetzt

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(); 

     } 
    } 
} 

Dann in Ihrem db Kontext:

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.. 
} 
Verwandte Themen