web-dev-qa-db-ja.com

EF5プロジェクトの開始:変換の実行エラー:置換トークン '$ edmxInputFile $'を上書きしてください

.Net4.5を使用してVS2012でコンソールプロジェクトを作成しています。その後、プロジェクトに「追加」、「新しいアイテム」、「EF 5.x DbContext Generator」を選択します。その後、数秒後に「エラーリスト」タブに次のエラーメッセージが表示されます。

エラー1変換の実行中:置換トークン '$ edmxInputFile $'を、生成元の.edmxファイルの実際の名前で上書きしてください。 C:\ Projects\Tests\ConsoleAppEF5\ConsoleAppEF5\Model1.tt`

どうすれば修正できますか?

私は何が欠けていますか?

37
Gil

最初にedmxモデルを作成して、そこからPOCOを自動的に生成する必要があります。メニューから追加できます(新しい項目の追加-> ADO.NETエンティティデータモデル)。モデルを作成したら、DbContextジェネレーターを使用できます。 $ edmxInputFile $をedmxファイルの名前に置き換えてから、編集中のファイルを保存します(VS 2012では自動的に行われます)。

46
eternity

そして別のシナリオでは、これは明らかに既知のバグです: http://web.archive.org/web/20131203074519/http://connect.Microsoft.com/VisualStudio/feedback/details/498723/ado- net-entityobject-generator-error-list-bug

したがって、DbContextジェネレーターを追加してから削除すると、このエラーが発生する場合は、プロジェクトを閉じて再度開きます。私のためにそれを解決しました。

40
Alex

私の場合、誤ってEF Db Context Generatorの代わりにEntity Frameworkを追加していました。合計PEBKACが、ここに投稿しているのは自分だけではないと確信しているためです。

これは、私が望んでいたTTではなくテキストテンプレートであるため、ファイル拡張子がEDMXであることに気付きました。

エンティティを追加する場合は、ADO.NET Entity Data ModelnotEF X.x DbContext Generatorを追加します

8
workabyte

私の場合、EF 5.x DbContext Generatorを削除することにしました。追加することを選択したときにこのエラーが発生しましたが、「Model1.Context.tt」と「Model1.tt」をよく考えて削除しました。残念なことに、私はそれが私がしなければならないすべてではないことに気づきませんでした。別の「ビルド」を実行すると、OPのエラーが発生しました。

次のステップ:Model1.ttに行き、$edmxInputFile$そして空の文字列として残し、クリックしてプロジェクトをビルドします。これにより、UnauthorizedExceptionエラーが発生しました(これは問題ありませんが、とにかく何も変更したくありませんでした)。元のエラーを取り除いてほしかっただけです。

次に、いろいろ調べてみたところ、プロジェクトの「.csproj」ファイルが次のように変更されていることがわかりました。

<ItemGroup>
    <Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
</ItemGroup>

今、私はこのGUIDがエラーのすべてのケースで同じになる、または誰もがEF 5.x DbContext Generatorを追加するたびに同じになるとは思わない。しかし、.csprojファイルの場合(注:これは.csproj.userファイルとは異なります)が変更されました(ソース管理にあり、これを伝えることができます)。このセクションを削除し、「ビルド」を実行しました。そして、私のエラーを取り除きました。

ソース管理にない場合は、いつでもダミープロジェクトを作成し、.csprojファイルをそのプロジェクトのファイルと比較し、.csprojに余分なものを取り出して「ビルド」(保存)することで試行錯誤を行うことができます。エラーが解消されない場合は元に戻します)。私はこれがそれを行うための素晴らしい方法であることを知っていますが、少なくともあなたはソリューション全体をやり直すのに時間を無駄にしないでしょう。

2
vapcguy