2012-03-01 3 views
3

エンティティフレームワーク4(コードファースト)とFluent Migratorを使用するプロジェクトに取り組んでいます。FluentMigratorでコードとステータス値を追加するベストプラクティス?

プロジェクト全体行くでは、我々は我々のスキーマの変更とプロファイル我々は様々な環境で人口たいテスト・データのためののすべてのために移行を作成しました。

しかし、すべての環境に配置したい "コード"や "ステータス"を挿入するベストプラクティスは何ですか?テーブルの作成中にそれらを指定するか、またはそれらのための特定のプロファイルを作成する必要がありますか?

具体的には、我々はそうのように私達のデータベース用に定義されたアドレスの種類は、「コード」テーブルを持っている:

[Migration(22)] 
public class M0022_CreateAddressTypesTable : Migration 
{ 
    public override void Up() 
    { 
     Create.Table("AddressTypes") 
      .WithColumn("Id").AsInt32().NotNullable().PrimaryKey() 
      .WithColumn("Name").AsString(50).NotNullable().WithDefaultValue(string.Empty) 
      .WithColumn("Description").AsString(100).NotNullable().WithDefaultValue(string.Empty); 
    } 

    public override void Down() 
    { 
     Delete.FromTable("AddressTypes"); 
     Delete.Table("AddressTypes"); 
    } 
} 

ので、我々はまた、私たちのデータでAddressTypes表を移入するには、この機会を使用する必要がありますか?あるいは、それをある種のプロファイルに抽象化する必要がありますか?

私は両方のメリットとデメリットがあるので、他のチームがこのような状況をどのように処理しているか聞いてみたいと思います。

+0

あなたは何をやったのですか?私たちは同じ問題を抱えています... –

答えて

2

すべての環境で必要な場合は、個人的には「参照データ」をプロファイルクラスではなくマイグレーションクラスに配置します。

プロフィール=>特定の(テスト、その他)

移行は=>ジェネリック件のデータ

特定のプロファイルのみを追加することになり件のデータ:

メンテナンス&コードの理解は次のように、単純なルールで、常に簡単です役に立たない複雑さ(私の謙虚な視点)。

+1

私はまだ前後に行きます。たとえば、コードやステータスの値がどこに追加されているかを確認するには、ほとんどすべての移行ファイルをスキャンする必要があります。それらが1つのファイルに含まれていれば、1か所に集まり、管理しやすくなります。私は実際にメンテナンスとコードの理解を向上させると思う。 –

+0

それでは、異なるマイグレーションクラスから呼び出せる「挿入メソッド」を持つ単一の静的クラスを作成してみてください。存在しないテーブルのデータを追加することはできません。そのため、1つの場所に「具体的な挿入」があり、必要な場所にこれらの挿入を呼び出します –

関連する問題