2013-05-17 6 views
31

Tworzę projekt konsolowy w VS2012 z .Net4.5. Po tym dodam "Dodaj", "Nowa pozycja" do projektu i wybierz "EF 5.x DbContext Generator". Następnie, po kilku sekundach pojawia się następujący komunikat o błędzie w „Błąd listy” zakładce:

Error 1 transformacja Bieg: Proszę zastąpić wymiany tokena „$” $ edmxInputFile z rzeczywistą nazwą .edmx plik, z którego chcesz wygenerować. C: \ Projekty \ Testy \ ConsoleAppEF5 \ ConsoleAppEF5 \ Model1.tt`A

Jak mogę to naprawić?

Czego mi brakuje?

+0

Należy rozważyć użycie kodu pierwsze podejście, zamiast projektanta, nawet jeśli chcesz kod wygenerować model dla Ciebie. – Yuck

+0

Robi to za pomocą CodeFirst nie jest tutaj problemem. To tylko przykładowy projekt testowy, który przeprowadzi małe testy z EF5, ale niestety wystąpił ten błąd. Czy ktoś może mi pomóc ? – Gil

+0

zobacz [cel generatora EF 6.x DbContext] (http://stackoverflow.com/a/23037604) –

Odpowiedz

34

Najpierw należy utworzyć model edmx, aby automatycznie wygenerować z niego POCO. Możesz dodać go za pomocą menu (Dodaj nowy element -> Model danych jednostki podmiotu ADO.NET). Po utworzeniu modelu możesz użyć generatora DbContext. Zastąp plik $ edmxInputFile $ nazwą pliku edmx, a następnie zapisz plik, który edytujesz (chociaż VS 2012 powinien to zrobić automatycznie).

+6

FYI, nooby takie jak ja, POCO = "Zwykły stary obiekt CLR" – BlueMonkMN

+1

Dla mnie był to Dodaj> Nowy element ...> EF 5.x Generator DbContext. Wybrałem to, ale potem zdecydowałem, że nie chcę tego, próbowałem usunąć "Model1.Context.tt" i "Model1.tt", a następnie dostałem ten błąd. Jeśli wrócisz i przeczytałeś, jak sugerujesz, a następnie wyczyścisz lub zaktualizujesz wiersz "const string inputFile" w Model1.tt, możesz pozbyć się błędu, ale co umieścisz? A co, jeśli chcesz po prostu pozbyć się Generatora EF, nie zaczynając od nowa? Powiedziałbym, że to słaba odpowiedź. – vapcguy

2

W moim przypadku zdecydowałem, że chcę pozbyć się EF 5.x Generatora DbContext. Dostałem ten błąd, gdy wybrałem go do dodania, ale potem usunąłem "Model1.Context.tt" i "Model1.tt" po lepszym myśleniu o tym. Na nieszczęście dla mnie nie zdawałem sobie sprawy, że to nie wszystko, co musiałem zrobić. Kiedy zrobiłem kolejną "kompilację", dostałem błąd OP.

Moje kolejne kroki: Poszedłem do Model1.tt, usunięto $edmxInputFile$ i zostawiłem go jako pusty ciąg i kliknąłem, aby zbudować projekt. Dało mi to błąd nieautoryzowanego wyłączenia (co jest w porządku, i tak nie chciałem niczego modyfikować). Chciałem tylko pozbyć się pierwotnego błędu.

Następnie zrobiłem kilka grzebie się i okazało się, że „.csproj” file mój projekt został zmodyfikowany w ten sposób:

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

Teraz nie sądzę, to GUID będzie taka sama w wszystkie przypadki błędu, a nawet za każdym razem, gdy ktoś dodaje w EF 5.x DbContext Generator. Ale jeśli twój plik .csproj (UWAGA: to jest inny niż plik .csproj.user) został zmieniony (miejmy nadzieję, że jest w kontroli źródła i możesz to powiedzieć), powinieneś być w stanie dowiedzieć się, jak. Usunąłem tę sekcję, zrobiłem "Build" i pozbyłem się moich błędów.

Jeśli nie masz kontroli nad źródłem, zawsze możesz utworzyć fałszywy projekt i porównać plik .csproj z plikiem tego projektu, a także wykonać próbę i błąd, usuwając wszystko, co jest ekstra na .csproj i wykonując " Build "(zapisywanie rzeczy w Notatniku, odkładanie ich, jeśli nie powoduje to usunięcia błędu). Wiem, że to świetny sposób, ale przynajmniej nie zmarnujesz czasu na ponowienie całego rozwiązania.

+0

Dla tych, którzy rzeczywiście chcą EF 5.x DbContext Generator, znalazłem w Googling, że wstawiłbyś nazwę pliku .edmx do ciągu, zakładam "Model1.edmx", w moim przypadku, ale odkąd to zrobiłem nigdzie nie widzę pliku .edmx, tak naprawdę nie wiem na pewno. – vapcguy

1

W moim przypadku przypadkowo dodałem Generator kontekstu EF Db zamiast dodawać rzeczywisty obiekt. Ogółem PEBKAC, ale zamieszczam tutaj, ponieważ jestem pewien, że nie będę jedyny.

Zauważyłem, że rozszerzenie pliku było TT, ponieważ jest to szablon tekstowy, a nie EDMX, który chciałem.

Jeśli szukasz dodać podmiot następnie dodać ADO.NET Entity Data ModelnieEF X.x DbContext Generator

Powiązane problemy