2012-08-27 7 views
8

Add-Migrationによって生成されたキー名(インデックス、主キー、および外部キー)に[。](ピリオド)を含めることはできません。 CSharpMigrationCodeGeneratorを使用していますが、残念ながら外部キーやインデックス名を変更することはできません。主キーの名前は、CREATE TABLEをオーバーライドの一部として設定することができます。Entity Framework 5コードを最初に使用したキーの名前付け

protected override void Generate(
    CreateTableOperation createTableOperation, IndentedTextWriter writer) 
    { 
     createTableOperation.PrimaryKey.Name = "USE THIS NAME"; 
     base.Generate(createTableOperation, writer); 
    } 

しかし、私が本当に必要なのはそれだけで(カスタム名ジェネレータをオーバーライド意味する)の完全停止を削除したことを確認するための方法です - しかし、私はこれを行う方法を見ることができません。

+4

あなたが使用してみましたここで説明するカラム名属性:http://stackoverflow.com/questions/5082991/influencing-foreign-key-column-naming-in-ef-code-first-ctp5 –

+2

データベースを詳細に制御する必要がある場合。最初にデータベースを作成し、次にコードを優先すると良いでしょう。 –

答えて

0

power toolsでコードを遡及的に生成しようとしましたか?

データベースからコードファーストクラスを生成するだけでなく、ユニークなシナリオ(予約文字を処理するカスタム命名ロジックなど)を処理するためにオブジェクトを生成するT4テンプレートをカスタマイズすることもできます。私entity.ttは、生成された各オブジェクトの上、以下があります: -

[MetadataType(typeof(<#= efHost.EntityType.Name #>_Validation))] 

これは、私はすべてのデータの検証は私のオブジェクトの再作成時に上書きされていない別のクラスにオフ養殖持つことを意味します。

+0

ありがとうございます - この問題はもはや存在せず、当時は非常に具体的でした。昨年、工具を使って物事が進んだので、もはやそれほど重要ではありません。 –

0

この問題は、もはや存在しなくなり、当時は非常に具体的でした。昨年、工具を使って物事を進めてきたので、このように問題を解決する必要がないので、実際にはそれほど重要ではありません。

読書のための多くのおかげで、あなたは外部キーまたはインデックス名を変更することができますエンティティフレームワークのコード最初の移行により