1

現在、EF Power Tools 3 で EF 5.0.0 を使用しています。最初にリバース エンジニアリング コード (Power Tools 3) を使用して、既存のデータベースからリバース エンジニアリングを行おうとしています。これを行うサンプルは、このMSDN リンクにあります。

これを行う際の唯一の問題は、データベース オブジェクトの名前です。小さな単語とアンダースコアをスペースとして使用するデータベース オブジェクト、例: item_cart. ただし、そのような命名基準を C# アプリケーションに渡したくないのです。

次に、テンプレートを微調整して、各テーブル/フィールド名をアプリケーションの命名基準に従うように変換しようとしました。これは私が今まで行ってきた現在の変換ツールです。

    public static string SqlNameToEntityName(string name)
    {
        StringBuilder entityName = new StringBuilder();

        if(string.IsNullOrEmpty(name)) return name;
        else if (!name.Contains('_'))
        {
            return name[0].ToString().ToUpper() + name.Substring(1);
        }

        string rippedName = name;

        while(rippedName[0] == '_')
        {
            rippedName = rippedName.Substring(1);
        }

        do{
            entityName.Append( CustomConvention.UpperFirstChar( rippedName.Substring(0, rippedName.IndexOf('_')) ) );
            rippedName = rippedName.Substring(rippedName.IndexOf('_')+1);
        }while(rippedName.Contains('_'));

        entityName.Append( CustomConvention.UpperFirstChar(rippedName) );

        return entityName.ToString();
    }

    public static string UpperFirstChar(string name)
    {
        if(string.IsNullOrEmpty(name)) return "";

        return name[0].ToString().ToUpper() + name.Substring(1, name.Length-1).ToLower();
    }

次に、Entity.tt で、この静的メソッドを使用してテンプレートを変更しました。columnName = CustomConvention.SqlNameToEntityName(columnName);. このアプローチを使用すると、テーブル名を からitem_cartItemCart十分に変換できます (ただし、まだテストされていません)。

最後に、ここに私の質問があります:

  • 現在、.cs ファイル名を命名規則に従って変更することはできません。したがって、 item_cart.cs のままです
  • 私のアプローチは将来問題になりますか?
  • これを行うためのより良い(標準/よりクリーンな)方法はありますか?
  • このリバース エンジニアリングのほかに、テーブル (おそらくビューやプロシージャ) をエンティティにマップするための最良の (最も速くてクリーンな) 方法は何ですか?

関連する可能性のある質問: EF4 のエンティティとデータベース標準との間の命名規則の競合を解決していますか?

4

0 に答える 0