2015-03-27 19 views
50

Gram w gry z Entity Framework 7 i ASP.NET 5 dla nowego projektu, nad którym pracuję, ale trafiłem na blokadę drogi. Zespół, nad którym pracuję, wykorzystuje podejście DBA do rozwoju; tzn. baza danych jest zaprojektowana przez DBA, a następnie programiści zmieniają kod, aby zrekompensować zmiany modelu.Czy istnieje baza danych Entity Framework 7 - pierwszy generator POCO?

Przy użyciu EF6 działa to dobrze, ponieważ możemy po prostu zaktualizować kod za pomocą funkcji "aktualizacji" projektanta EDMX. Jedno kliknięcie, otrzymujemy nowe zajęcia i gotowe. Jednak w EF7 wszystko jest inne. Nie ma już projektanta, a my powinniśmy używać Code-First, który zgodnie z niektórymi wpisami na blogu zespołu EF, powinien również wspierać generowanie kodu "Database-First".

Jednak nie jestem w stanie dowiedzieć się, jak to zrobić z Visual Studio 2015 CTP6 w aplikacji ASP.NET 5. Czy obsługa oprzyrządowania jest na miejscu, czy też mam pecha? I czy w ogóle się w ogóle pojawia?

+0

sprawdź "kod inżyniera odwrotnego pierwszy" – DLeh

+1

Tak, spędziłem kilka dni na wyszukiwaniu. Wiele informacji o tym, jak to zrobić z EF6, ale z EF7 nie wydaje się być sposobem. Na razie stworzyłem projekt EF6, wykonałem tam inżynierię odwrotną i skopiowałem pliki do mojego projektu EF7 (z pewnymi modyfikacjami ze względu na nieistniejące przestrzenie nazw w EF7), ale na dłuższą metę Potrzebuję bardziej stabilnego rozwiązania. –

+1

Nie sądzę, że są na tyle różne, aby zrobić taką różnicę. Wydaje mi się, że EF7 jest nadal w wersji beta, więc prawdopodobnie nie ma jeszcze pełnego wsparcia. https://github.com/aspnet/EntityFramework/releases – DLeh

Odpowiedz

51

W najnowszych bitów można użyć wiersza polecenia dnx i PowerShell nakazuje to zrobić, tak

Scaffold-DbContext '<connectionString>' EntityFramework.MicrosoftSqlServer 

lub

dnx ef dbcontext scaffold "<connectionString>" EntityFramework.MicrosoftSqlServer 

lub (z EF Rdzeń RC2)

dotnet ef dbcontext scaffold "<connectionString>" Microsoft.EntityFrameworkCore.SqlServer 

Musisz zainstalować pakiety EntityFramework.Commands i EntityFramework.MicrosoftSqlServer.Design dla komunikacji i do pracy

+0

Czy możesz mi powiedzieć, gdzie uruchomić to polecenie .. gdzie znaleźć wiersz polecenia dnx – Pooran

+1

mój zły .. mam to http://blogs.msdn.com/b/sujitdmello/archive/2015/04/23/step-by -step-installation-instructions-for-getting-dnx-on-your-laptop.aspx – Pooran

12

Można to zrobić za pomocą konsoli menedżera pakietów NuGet lub wiersza poleceń. Próbowałem z wiersza polecenia. Po przejściu do folderu projektu w wierszu polecenia, kiedyś podobną komendę:

dnx ef dbcontext scaffold "Data Source=myServerName; Initial Catalog=myDatabaseName; Integrated Security=True" EntityFramework.SqlServer 

dostałem błędy dotyczące brakujących pakietów:

EntityFramework.Commands

EntityFramework.SqlServer.Design

z następującym po nim poleceniem przed kontynuowaniem:

dnu restore 

Rzeczywiste pakiety mogą się różnić w zależności od wymienionych frameworków w twoim pliku project.json.

Jeśli nie można wykonać polecenia dnx lub innych powiązanych poleceń w wierszu polecenia, należy postępować zgodnie z linkiem THIS, który został wymieniony w komentarzach innej odpowiedzi.

P.S.: Oto aktualna lista poleceń [w czasie pisania, ostatnia aktualizacja 21 sierpnia]:

ASP.NET - EntityFramework Wiki -- NuGet/DNX Commands

+1

dodał osobną odpowiedź dla nowej składni .NET Core RC2 (maj 2016) –

8

Oto zaktualizowanych parametrów z RC2.NET rdzenia (maj 2016)

dotnet ef dbcontext scaffold -c RRStoreContext -o Model 
"Data Source=(local);Initial Catalog=DBNAME;Integrated Security=True"  
Microsoft.EntityFrameworkCore.SqlServer --force 

Microsoft.EntityFrameworkCore.SqlServer Zauważ, że to nowa nazwa na opakowaniu, które należy stosować w poleceniu. Dodałem parametr force, aby nadpisać istniejące pliki. Parametr "o" jest nazwą katalogu wyjściowego. Teraz jest to dotnet zamiast dnx.

Począwszy od bieżącej wersji Zależności czego potrzebujesz w swojej project.json

"dependencies": { 
    "Microsoft.EntityFrameworkCore": "1.0.0-rc2-final", 
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0-rc2-final", 
    "Microsoft.EntityFrameworkCore.Tools": { 
     "type": "build", 
     "version": "1.0.0-preview1-final" 
    } 
    }, 

Uwaga: Typ „build” oznacza, że ​​coś Twego montaż nie zajmie to DLL jako zależność, ponieważ jest to potrzebne tylko do oprzyrządowania.

+0

Gdzie mogę znaleźć pełną dokumentację tego polecenia? –

+0

Warto również zauważyć, że flaga --force nadpisuje istniejące pliki –

+0

A 'dotnet ef --help' jest całkiem niezłe. –

Powiązane problemy