2016-10-25 26 views

答えて

2

私は自分自身で答えを探していたので、私はこの質問に遭遇しました。私はそれがEFコアでは実装されていませんが、かなり簡単に実装できることを発見しました。

あなたはこれらのいずれかを作成することができます

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

をそしてあなたは、エンティティ自体の構成を作成することができます - おそらくあります(

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

あなたはその後、どこかに、すべての設定を読み込むことができますがそれを行うための良い方法と良い場所の両方...しかし、これは私がやったことです): -

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

それはあなたのデシベルコンテキストでそれから、今、コア2.0に

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.. 
} 
関連する問題