2016-04-11 4 views
0

私はPlanetというクラスを持っています。これらはあまり頻繁に変更されず、シードデータもデータベース内のそのエンティティを初期化するために使用されません。私は、大量のデータと大量の種データを持つ移行クラスを持つことは望ましくありません。クラスごとに1つのマイグレーションを生成するよりも、クラスのシードデータをフックアップする方法はありますか?例えば。多くのエンティティを持つ移行で、PlanetのシードデータがクラスPlanetSeedDataに含まれているという記述を追加したいと思います。エンティティクラスのシードデータをそのクラスの宣言に関連付けることはできますか?

答えて

0

これを行うには適切なEFメソッドはありません。しかし、あなたはかなり簡単にあなた自身を作ることができます。

あなたは別のクラスにそのを移動する簡単な方法は、以下のようにそのクラスを定義するだろう、Sql(string)関数を呼び出すことで、移行中のデータをシードますので:

public static class PlanetSeedData 
{ 
    public static void Seed(Action<string> sql) 
    { 
     sql("INSERT INTO dbo.Planets(Name) VALUES('Mercury')"); 
     sql("..."); 
    } 
} 

次に、あなたの移行からこれを呼び出します:

public override void Up() 
{ 
    // CreateTable(...) 
    PlanetSeedData(x => Sql(x)); 
} 
関連する問題