2013-05-17 7 views
31

Ich erstelle ein Console-Projekt in VS2012 mit .Net4.5. Nach dem ich "Hinzufügen", "Neues Element" zum Projekt, und wählen Sie "EF 5.x DbContext Generator". Dann , nach ein paar Sekunden wird die folgende Fehlermeldung in der ‚Fehlerliste‘ Tab erscheint:

Fehler 1 Lauf Transformation: Bitte überschreiben Sie den Ersatz-Token ‚$ edmxInputFile $‘ mit dem tatsächlichen Namen des .edmx Datei, von der Sie generieren möchten. C: \ Projekte \ Tests \ ConsoleAppEF5 \ ConsoleAppEF5 \ Model1.tt`

Wie kann ich das beheben?

Was bin ich?

+0

Sie berücksichtigen sollten, einen Code erster Ansatz, anstatt den Designer, auch wenn Sie den Code wollen Ihr Modell für Sie zu generieren. – Yuck

+0

Es ist nicht das Problem, dies mit CodeFirst zu tun. Dies ist nur ein Beispieltestprojekt, um ein wenig mit EF5 zu testen, aber leider ist dieser Fehler aufgetreten. Kann mir jemand helfen ? – Gil

+0

siehe [Zweck von EF 6.x DbContext Generator] (http://stackoverflow.com/a/23037604) –

Antwort

34

Sie sollten zuerst das edmx-Modell erstellen, um automatisch POCOs daraus zu generieren. Sie können es über das Menü hinzufügen (Neues Element hinzufügen -> ADO.NET-Entitätsdatenmodell). Nachdem das Modell erstellt wurde, können Sie den DbContext-Generator verwenden. Ersetzen Sie $ edmxInputFile $ durch den Namen Ihrer edmx-Datei und speichern Sie die Datei, die Sie bearbeitet haben (obwohl VS 2012 dies automatisch tun sollte).

+6

FYI, noobs wie ich, POCO = "Plain Old CLR-Objekt" – BlueMonkMN

+1

Für mich war es Hinzufügen> Neues Element ...> EF 5.x DbContext Generator. Ich hatte dies ausgewählt, entschied dann aber, dass ich es nicht wollte, versuchte "Model1.Context.tt" und "Model1.tt" zu löschen, dann kam dieser Fehler. Wenn Sie zurückgehen und es wie vorgeschlagen lesen, löschen oder aktualisieren Sie die Zeile "const string inputFile" in Model1.tt, können Sie den Fehler loswerden, aber was setzen Sie? Und was, wenn Sie nur den EF Generator loswerden wollen, ohne von vorn anzufangen? Ich würde sagen, das ist eine schwache Antwort. – vapcguy

2

In meinem Fall entschied ich, dass ich den EF 5.x DbContext Generator loswerden wollte. Ich habe diesen Fehler erhalten, als ich ausgewählt habe, es hinzuzufügen, aber dann "Model1.Context.tt" und "Model1.tt" gelöscht, nachdem ich darüber nachgedacht habe. Zu meinem Leidwesen war mir nicht klar, dass das nicht alles war, was ich tun musste. Als ich einen weiteren "Build" ausführte, bekam ich den OP-Fehler.

Meine nächsten Schritte: Ich ging zu Model1.tt, löschte $edmxInputFile$ und ließ es als eine leere Zeichenfolge und klickte, um das Projekt zu erstellen. Dies gab mir einen UnauthorizedException-Fehler (was gut ist, ich wollte es sowieso nichts modifizieren). Ich wollte nur, dass der ursprüngliche Fehler beseitigt wird.

Als nächstes habe ich einige stochern und ich fand heraus, dass mein Projekt „CSPROJ“ Datei mit diesem modifiziert:

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

Jetzt denke ich nicht diese GUID die gleiche sein wird, in Alle Fälle des Fehlers oder sogar jedes Mal, wenn jemand den EF 5.x DbContext Generator hinzufügt. Aber wenn Ihre .csproj-Datei (Anmerkung: das ist anders als Ihre .csproj.user-Datei) wurde geändert (hoffentlich ist es in der Quellcodeverwaltung und Sie können dies sagen), sollten Sie in der Lage sein, herauszufinden, wie. Ich habe diesen Abschnitt gelöscht, habe einen "Build" erstellt und meine Fehler beseitigt.

Wenn es nicht in der Quellcodeverwaltung ist, können Sie immer ein Dummy-Projekt erstellen und Ihre .csproj-Datei mit der Datei dieses Projekts vergleichen und etwas ausprobieren, indem Sie alles, was extra für Ihre .csproj ist, ausführen. Build "(speichert die Daten im Editor und setzt sie zurück, wenn der Fehler nicht behoben wird). Ich weiß, dass dies ein höllischer Weg ist, aber zumindest verschwendest du keine Zeit damit, deine gesamte Lösung zu wiederholen.

+0

Für diejenigen, die tatsächlich den EF 5.x DbContext Generator, ich in Googling, dass Sie in der Zeichenfolge .edmx Dateiname in die Zeichenfolge, ich nehme "Model1.edmx", in meinem Fall, aber seit ich tat Ich sehe keine EDMX-Datei irgendwo, ich weiß es wirklich nicht genau. – vapcguy

29

Und in einem anderen Szenario, das ist offenbar ein bekannter Fehler: http://web.archive.org/web/20131203074519/http://connect.microsoft.com/VisualStudio/feedback/details/498723/ado-net-entityobject-generator-error-list-bug

Wenn Sie also einen DbContext Generator hinzufügen und entfernen Sie sie dann und Sie diese Fehlermeldung erhalten, nur in der Nähe und das Projekt wieder öffnen. Ich habe es für mich gelöst.

+3

Das .... so viel davon. – LogicaLInsanity

+2

Wow, das ist richtig! –

1

In meinem Fall habe ich versehentlich den EF Db Context Generator hinzugefügt, anstatt die tatsächliche Entität hinzuzufügen. Gesamt PEBKAC, aber ich poste es hier, da ich sicher bin, dass ich nicht der einzige sein werde.

Ich bemerkte, dass die Dateierweiterung TT war, da dies eine Textvorlage ist nicht die EDMX, die ich wollte.

Wenn Sie suchen Unternehmen hinzufügen fügen Sie dann ADO.NET Entity Data ModelnichtEF X.x DbContext Generator

Verwandte Themen