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.
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
.
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.
- EntityFramework
- EntityFramework.SqlServer
- 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.
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.
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