2016-09-27 4 views
2

私はVS 2012からアップグレードされたと思われる既存のプロジェクトのDbContextで(Moqを使用して)DbSetをモックしようとしています。 DbSet <>はバーチャルとしてマークされていないため、それらを嘲笑することはできません。私が行った新しいプロジェクトを見ると、仮想としてマークされています。既存のプロジェクトでエンティティタイプが仮想としてマークされていません

これは.edmxファイル内にあるので、コードが自動生成されているので、コードに仮想を追加することはできません。誰もが仮想にするために設定できるプロパティを知っていますか?

+0

使用しているEFのバージョンはどれですか? – kiziu

+0

EFバージョン6です。 – user441521

答えて

4

EF6では、デフォルトでDBSetのメンバーがvirtualとして作成されます。これは設定から​​変更することはできませんが、T4テンプレート(.ttファイル)を編集する必要があります。ほとんど誰かがこれを編集して、virtualというキーワードを削除した可能性があります。

T4テンプレートを見つけるには、ソリューションエクスプローラで.edmxファイルで作成されたツリーを展開します。その中に.ttというファイルがあります。

あなたDBSetvirtualもう一度を作成するには、(デフォルト.ttで、それはライン307である)メソッドstring DbSet(EntitySet entitySet)を見つける必要があります。このメソッドはプロパティ宣言を作成し、ここでそのパターンを操作できます。デフォルトでは

"{0} virtual DbSet<{1}> {2} {{ get; set; }}" 

が使用されます。このパターンのあなたのバージョンを見つけ、それをあなたの好きなもの(または単に私が提供したデフォルトのバージョン)に変更してください。

EDIT:あなたは簡単にこの方法を見つけることができない場合は、

を検索してみてくださいDbSet <

EDIT:.ttファイルを編集して保存した後、それが自動的に実行されなければなりません。そうでない場合は、右クリックして[カスタムツールの実行]を選択してください。

+0

ありがとうございます! – user441521

関連する問題