1

ADO.NET Mocking Context Generator を使用して EDMX ファイルからエンティティ クラスを生成し、単体テストで使用できるようにしています。ただし、エンティティを生成してプロジェクトをビルドしようとすると、次のエラーが発生します。

The type name 'DateTime' does not exist in the type 'MyProject.Models.System'

コード内で、DateTime プロパティは次の形式で宣言されます。

public virtual System.DateTime LastActive

System.DateTime を DateTime だけに変更すると、エラーは解消されます。残念ながら、これは実用的ではありません。非常に多くのファイルが存在するだけでなく、次に再生成するときに上書きされるからです。

このエラーが表示されるのはなぜですか?どうすれば回避できますか?

4

2 に答える 2

0

最近同じ問題が発生し、これに出くわしました。Jon Skeets の回答が問題の特定に役立ちましたが、*.tt ファイルを編集するよりもはるかに簡単な解決策があります。デザイナーに行くと、エンティティ/クラス/モデルを呼び出すことができますシステムと呼ばれるテーブルがまだありながら、システム以外のもの。

私はデータベースを提供していなかったので、テーブル名を変更することはできませんでした。

  1. デザイナーで .edmx ファイルを開く

  2. system という名前のテーブルを見つけます

  3. 右クリックしてプロパティを選択するか、クリックして右下隅を見てください

  4. カテゴリ「一般」の下で、プロパティ「名前」を見つけて、テーブルとは異なる名前を付けます。

  5. .edmx ファイルを右クリックし、[カスタム ツールの実行] を選択します。

私にとって、これは13,000以上のエラーを解決しました

デザイナーを使用せずにエンティティの名前を変更する方法を誰かが知っている場合は、必要に応じてコメントに書いてください。

于 2014-09-22T07:44:45.443 に答える
0

というタイプがあることが問題のようですSystem。それは本当に悪い考えです。この問題はいたるところに発生します。(詳細については、このトピックに関する Eric Lippert のブログ投稿を参照してください...)

これを宣言する最も具体的な方法は次のとおりです。

public virtual global::System.DateTime LastActive { get; set; }

ジェネレーターを変更してそれを作成できる場合は、問題ないはずですが、個人的には、System可能であれば、型を別の名前に変更したいと思います。

于 2012-05-30T11:11:19.433 に答える