2011-09-19 22 views
6

Fluent APIを使用してエンティティにテーブルのマッピングを分割し、OnModelCreatingメソッドですべてが別のクラスにあり、インラインではないようにする最良の方法は何ですか?私は現在やっている何をEntity Frameworkコードファースト - 別のファイルでの設定

:私が欲しいもの

public class FooContext : DbContext { 
    // ... 
    protected override OnModelCreating(DbModelBuilder modelBuilder) { 
     modelBuilder.Entity<Foo>().Property(...); 
     // ... 
    } 
} 

public class FooContext : DbContext { 
    // ... 
    protected override OnModelCreating(DbModelBuilder modelBuilder) { 
     modelBuilder.LoadConfiguration(SomeConfigurationBootstrapperClass); 
    } 
} 

あなたがこれをどのように行うのですか?私はC#を使用しています。

答えて

16

あなたがそうのように、EntityTypeConfigurationクラスから継承するクラスを作成することになるでしょう:

public class FooConfiguration : EntityTypeConfiguration<Foo> 
{ 
    public FooConfiguration() 
    { 
     // Configuration goes here... 
    } 
} 

次に、あなたがそうのようなコンテキストの一部として設定クラスをロードすることができます。

public class FooContext : DbContext 
{ 
    protected override OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Configurations.Add(new FooConfiguration()); 
    } 
} 

This articleでは、設定クラスの使用についてさらに詳しく説明しています。

関連する問題