Uaktualnienie z Entity Framework 5 do 6

Po uaktualnieniu naszego projektu z używania Entity Framework 5 do Entity Framework 6 (choć funkcja aktualizacji NuGets) dostaję następujący błąd na mojej generowanej klasie Entity:

Błąd 1 typ lub nazwa przestrzeni nazw ' Objects 'nie istnieje w przestrzeni nazw' System.DANE "
(brakuje Ci referencji do montażu?)

Rozumiem, że dzieje się tak dlatego, że przestrzeń nazw się zmieniła i mogę ręcznie naprawić błąd zmieniając mój import z: using System.Data.Objects; oraz using System.Data.Objects.DataClasses; Na: using System.Data.Entity.Core.Objects;

Jednak plik jest generowany, więc muszę ponownie zastosować tę poprawkę po każdym Update model from Database. Czy jest coś dodatkowego do zmiany, aby EF wygenerował model bez tego błędu.

Author: Erik Philips, 2014-02-20

2 answers

Myślę, że twój problem polega na tym, że szablony T4, które generują uprawnienia i kontekst są nadal w wersji EF 5.

Najpierw musisz usunąć bieżące elementy generowania kodu, które znajdują się w kodzie za modelem, a mianowicie <Modelname>.Context.tt i <Modelname>.tt.Następnie dodaj nowy generator kodu EF wersja 6 z Right click in the model designer-> Add Code Generation Item ... -> EF 6.x DbContext Generator.

 62
Author: boindiil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-20 05:38:12

To jest moje doświadczenie, jak pomyślnie uaktualnić Entity Framework v5 do v6 dla:

  • SQL Server.
  • C # i Visual Studio 2012.
  • najpierw baza danych.

Akronimy:

  • EF5 = Entity Framework v5.
  • EF6 = Entity Framework v6.

Lista kontrolna:

    [[5]}EF5 jest wbudowany w rdzeń. NET 4.5, podczas gdy EF6 został przeniesiony i jest open source.
  • oznacza to, że musisz dodać nowe zespoły EF6 do wszystkie istotne projekty w rozwiązaniu, w szczególności projekt wejścia.
  • oznacza to, że musisz usunąć system montażu.Podmiot ze wszystkich projektów, ponieważ odnosi się to do EF5.
  • EF5 ma jedynkę .dll " EntityFramework.dll", natomiast EF6 ma dwa .dlls:
    • EntityFramework
    • EntityFramework.SqlServer
  • EF6 wymaga zmian w aplikacji.config. Najlepszym sposobem na wprowadzenie tych zmian jest kliknięcie prawym przyciskiem myszy na rozwiązanie, wybierz "Zarządzaj pakietami NuGet dla rozwiązania", wyszukaj "EntityFramework" i zainstaluj v6.1.0 Entity Framework we wszystkich odpowiednich projektach, w szczególności w projekcie wejściowym. Upewnij się, że odinstalowałeś wszystkie pakiety NuGet dla EF5 Framework ze wszystkich projektów. Spowoduje to automatyczną aktualizację aplikacji.pliki konfiguracyjne więc są poprawne.
  • zbadaj całą aplikację.pliki konfiguracyjne dla odniesień do EF5 i usuń je.
  • przestrzenie nazw się zmieniły:
    • usuń linie C # using System.Data.EntityClient;, czyli EF5 Referencja.
    • Dodaj linię C # using System.Data.Entity.Core.EntityClient;, która jest poprawna dla EF6.
  • / Align = "left" / Ta lista kontrolna jest Wiki społeczności, możesz edytować tę listę, aby pomóc innym nieszczęsnym duszom, które nadal walą głowami o ceglany mur, który może być konfiguracją EF6.

    Aktualizacja 2016-02-15

    Proszę zapoznać się z innymi opcjami przed rozważeniem EF. Jest 100x wolniejszy od innych opcji, jest znacznie bardziej skomplikowany dla tego, co dostarcza, GUI jednostki jest pełen błędów i ma dziwne problemy z użytecznością, a my będziemy musieli wyrwać cały nasz kod EF6 i zastąpić go czymś, co zajmuje mniej niż 5 minut, aby wykonać zapytanie, które zajmuje 5 sekund w elegancki.

     35
    Author: Contango,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2016-03-12 09:45:23