Domyślny kod wygenerowany z modelu w Entity Framework 5 dziedziczy teraz DbContext zamiast ObjectContext.
to nadal realizuje IDisposable, ale jeśli otrzymuję błąd z linii kodu podobnego do tego:
using (var mymodel = new MyModelContext()) { ... }
... narzekających nie wykonawczych IDisposable, to problem jest najbardziej prawdopodobne, że model jest zdefiniowany w oddzielnym zestawie, który odwołuje się do EF5 i nie dodano odwołania EF5 do projektu.
Jak już wspomniał Ladislav Mrnka w swojej odpowiedzi, jeśli chcesz przekazać ciąg połączenia do konstruktora, musisz ręcznie stworzyć swój własny konstruktor, aby to zrobić.
Jeśli chcesz przełączyć Entity Framework z powrotem do starszej stylu wygenerowany kod, który automatycznie generuje konstruktora, którego szukasz, a następnie wykonaj następujące kroki:
- Kliknij na powierzchnię projektanta swoje Plik EDMX i spójrz na okno właściwości. Znajdź właściwość o nazwie "Strategia generowania kodu" i ustaw ją na "Domyślna" zamiast "Brak". Dzięki temu Visual Studio zacznie tworzyć kod dla twojego modelu obiektowego w MyModel.Designer.cs w jednym dużym pliku, tym razem przy użyciu ObjectContext zamiast DbContext.
- Usuń następujące pliki poniżej spod pliku EDMX: MyModel.Context.tt, MyModel.tt. Są to automatycznie wygenerowane pliki, których już nie potrzebujesz. Jeśli ich nie usuniesz, otrzymasz konflikty nazw klas, ponieważ obiekty zostaną utworzone dwukrotnie.
Dzięki! W przypadku, gdy inni go przegapili, projekt implementujący kod "using (...)" potrzebuje nowego EntityFramework.dll, a nie tylko projektu, który przechowuje plik .edmx. – Parmenides
@Parmenides można określić, które za pomocą odniesienia potrzebuje? – Zapnologica
Dziękujemy! Oprócz odwołania do EntityFramework, musiałem dodać odniesienie do System.Data.Entity, a następnie zniknął mój błąd "using". :) –