16

名前空間を指定する場所を再生成する必要がある場合。Models名前空間内から部分クラスを使用しようとしていますが、一致しません。

以下の簡略化されたコードフラグメントは、エンティティフレームワーククラスが生成された場所です

namespace projectname
{
   #region Contexts

   /// <summary>
  /// No Metadata Documentation available.
  /// </summary>
  public partial class MyClass
  {

  }
}

モデルフォルダにクラスを追加すると、

namespace projectname.Models
{

    public partial class MyClass
    {
     //etc, etc 
    }
}

ご覧のとおり、名前空間が一致しないため、コンパイラがprojectname.Models.MyClassとprojectname.MyClassの両方を認識しているため、名前空間を使用しようとすると問題が発生します。

これを修正する正しい方法、できればEFクラスを更新してprojectname.Models名前空間に存在するようにする方法についてアドバイスをお願いしますが、どうすればよいかわかりません。

4

4 に答える 4

12

Roman O のコメントに沿って、テキスト変換 (.tt) ファイルの "Custom Tool Namespace" プロパティを更新することで、名前空間を変更できます。これにより、生成されたエンティティ クラス (Database First アプローチで) がエンティティ モデル (.edmx) ファイルに関連付けられます。これは、EF 5.0 を使用する VS 2012 Express で機能します。

スクリーンショットを投稿しますが、評判が悪いためです。

于 2014-03-16T01:40:06.260 に答える
6

IIRC、エンティティ データ モデルを使用している場合は、xml ファイルまたは複数のファイルを使用して名前空間を直接変更できるはずです (さまざまなストレージおよび概念モデルのすべてで名前空間を変更する必要がある場合があります)。デザイナーでそれを変更する方法さえあるかもしれません..簡単に思えます。

実際、解決策はここにあるかもしれません:

生成されたコードの概要 (エンティティ データ モデル デザイナー) (「カスタム ツールの名前空間」を参照)

于 2012-12-28T04:47:45.930 に答える
3
  • ソリューション エクスプローラーでプロジェクトの .edmx ファイルを右クリックし、[プロパティ] を選択します。
  • VS のプロパティ ペインで、細かいカスタム ツールの名前空間
  • 希望する完全な CLR 名前空間を入力してください
  • プロジェクトを再構築する
于 2015-01-05T20:53:00.820 に答える