Jestem BARDZO nowy w ASP.NET MVC (3) i mam problemy z rozwiązaniem błędu kompilacji w programie Visual Studio:
Nie można znaleźć nazwy typu lub przestrzeni nazw `` DbContext '' (czy brakuje dyrektywy using lub odwołania do zestawu?)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
namespace MyProjectName.Models
{
public class MachineModel
{
// name
[Required]
[Display(Name = "Nom de la machine")]
public string Name { get; set; }
// IP
[Required]
[RegularExpression(@"(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",
ErrorMessage = "Donnez une adresse IPv4 valide.")]
[Display(Name = "Adresse IP de la machine")]
public string IP { get; set; }
}
public class MachineDbContext : DbContext
{
public DbSet<MachineModel> Machines{ get; set; }
}
}
Dwa błędy, które otrzymuję, to:
- Nie można znaleźć nazwy typu lub przestrzeni nazw `` DbContext '' (czy brakuje dyrektywy using lub odwołania do zestawu?)
- Nie można znaleźć nazwy typu lub przestrzeni nazw `` DbSet '' (czy brakuje dyrektywy using lub odwołania do zestawu?)
czego mi brakuje?
Odpowiedzi:
Miałem ten sam problem. Okazuje się, że potrzebujesz odwołania do EntityFramework.dll (a nie System.Data.Entity).
Właśnie wyciągnąłem go z aplikacji MvcMusicStore, którą możesz pobrać z: http://mvcmusicstore.codeplex.com/
Jest to również przydatny przykład, jak używać najpierw kodu jednostki z MVC.
źródło
Musisz odwołać się do
System.Data.Entity
assebmly do swojego projektu lub zainstalowaćEntityFramework
pakiet NuGet, który skonfiguruje wszystko za Ciebie.źródło
References
element w projekcie i wybierzAdd Reference...
. Następnie na.NET
karcie wybierzSystem.Data.Entity
. A jeśli chcesz użyć NuGet, kliknij prawym przyciskiem myszyReferences
element, a następnie wybierzAdd Library Package Reference...
i na karcie Online wyszukajEntityFramework
.TOOLS > Library Package Manager > Package Manager Console
w VS2012 i wpisałeminstall-package EntityFramework
po monicie. Działał doskonale.Tylko krótka notatka. To jest DbContext, a nie DBContext. tj. małą literą „B”. Odkryłem to, ponieważ miałem ten sam problem, podczas gdy Intelesense nie działał, dopóki nie spróbowałem wpisać pełnej nazwy przestrzeni System.Data.Entity ... i nazwy, a na koniec zasugerował opcję małej litery `` b '': -
System.Data.Entity.DbContext
źródło
Miałem ten sam problem używając VS2010. Wiem, że to naprawdę nie jest odpowiedź. Pomyślałem, że to może komuś pomóc. Rozwiązałem to, używając w pełni kwalifikowanej nazwy dla DBContext.
Zamiast
użyłem
i przebudował projekt. Nagle VS był szczęśliwy i mogłem nawet usunąć w pełni kwalifikowaną nazwę i po prostu użyć DBContext.
źródło
Miałem ten sam problem ... Instalowanie EF z konsoli Menedżera pakietów działało dla mnie
polecenie brzmiało:
Install-Package EntityFramework
źródło
Jeśli Twój kompilator nie rozpoznaje
Upewnić się
w pliku .csproj masz następujące odniesienie
wewnątrz elementu
który zawiera odniesienia do innych zespołów.
źródło
Miałem ten sam problem .. mam VS2010 express ..
(Uwaga: jeśli widzisz ten problem, spróbuj sprawdzić odwołania do EntityFramework.dll .. Może ich brakuje).
Następujące odpowiedzi rozwiązały to za mnie.
Zainstalowałem najnowszą aktualizację narzędzi MVC 3,
a następnie zainstalowałem EntityFramework 4.1
lub używając NUGet tj. from z Visual Studio 2010 Express (Narzędzia -> Menedżer pakietów bibliotek -> Dodaj odwołanie do pakietu biblioteki -> Wybierz Online -> EntityFramework)
O dziwo, to nie zadziałało .. Więc musiałem ręcznie dodać odwołanie do „EntityFramework.dll”,
spróbuj wyszukać dll .. może być tutaj
„C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ "
Jeśli już ją masz, po prostu dodaj odwołanie do „.net”.
Uwaga: jeśli używasz NuGet, tworzy on folder „pakiety” obok katalogu rozwiązania. Znajdziesz w nim folder „EntityFramework.4.1.10331.0”. W folderze „Libs” znajdziesz „EntityFramework.dll”.
Dodaj odniesienie do niego za pomocą zakładki Przeglądaj i wybierz powyższy plik dll.
źródło
Używam programu Visual Studio 2010 Express i dodaję odniesienie do
C:\Program Files\Microsoft ADO.NET Entity Framework 4.1\Binaries\EntityFramework.dll
rozwiązania problemu.źródło
To bardzo przydatne:
źródło
Aby uzyskać instrukcje krok po kroku, zobacz tę nową serię samouczków MVC / EF: http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp -net-mvc-application W samouczku założono, że zainstalowałeś najnowszą aktualizację narzędzi MVC 3 i zawiera łącze na wypadek, gdybyś tego nie zrobił.
źródło
Twój projekt nie może rozpoznać klas EntityFramework, dopóki nie dodasz go do projektu. Aby dodać obsługę EntityFramework, należy wykonać następujące kroki: Narzędzia-> Menedżer pakietów Nuget -> Zarządzaj pakietem Nuget dla rozwiązania przeglądaj EntityFramework Pokazuje najnowszą stabilną wersję EntityFramework. obecnie 6.1.3 to najnowsza wersja Zainstaluj ją dla wybranego projektu.
źródło
Pobierz http://www.dll-found.com/download/e/EntityFramework.dll
Wklej to w (dla x86)
Następnie kliknij prawym przyciskiem myszy projekt -> dodaj odniesienie -> wybierz EntityFramework
Bingo ......
źródło
Visual Studio Express SP1 Kliknij prawym przyciskiem myszy w Eksploratorze rozwiązań> Referencje> Dodaj odwołanie do pakietu biblioteki> EntityFramework
źródło
Zamiast tego użyj CTP5, jest to nowsza wersja z pewnymi zmianami w API. Musisz dodać odniesienie do EntityFramework.dll, który jest zainstalowany w katalogu CTP - domyślnie: c: \ Program Files \ Microsoft ADO.NET Entity Framework Feature CTP5 \ Binaries \ EntityFramework.dll dla systemu 32-bitowego. W systemie 64-bitowym zostanie umieszczony w Program Files (x86).
źródło
Zdarzyło mi się to, gdy rozgałęziłem kod. Aby to naprawić, kliknąłem prawym przyciskiem myszy mój projekt w programie Visual Studio, wybrałem zarządzanie pakietami Nu-get, odinstalowałem EntityFramework, a następnie ponownie zainstalowałem. Problem rozwiązany
źródło
Właśnie miałem ten problem i żadne z innych rozwiązań nie działało dla mnie. Używam programu Visual Studio 2010 i mam w rozwiązaniu dwa projekty: UIProject i DataAccessProject. UIProject ma odwołanie do DataAccessProject.
Mój UIProject był ukierunkowany na .Net Framework 4, ale mój DataAccessProject był nakierowany na .Net Framework 3.5 z jakiegoś powodu.
Rozwiązane problemy. Teraz mam odniesienia do obu EntityFramework i System.Data.Entity
źródło
Miałem ten sam problem. Musiałem przepisać „DBContext” po dodaniu odwołania do entityframework i to rozwiązało problem.
oznacza to, że program Visual Studio nie był w stanie automatycznie rozpoznać klasy i czekał na jej ponowne wpisanie. dlatego najlepiej najpierw dodać odniesienie, a następnie zaimplementować kod. VS 2013 - ostateczny używany
źródło
Musiałem najpierw odinstalować EntityFramework (Uninstall-package EntityFramework (najwyraźniej bez rozróżniania wielkości liter)), a następnie zainstalować go ponownie (Install-package EntityFramework), za pośrednictwem konsoli PM
źródło
Miałem ten problem, przeczytaj powyższą odpowiedź i pobierz plik entityframework.ddl, ale stwierdziłem, że jest on już przywoływany. Dodałem więc przestrzeń nazw i problem został rozwiązany
using System.Data.Entity;
Używam programu Visual Studio 2010 z zainstalowanym dodatkiem SP1
źródło
po odwołaniu się do entityframework.dll oba system.data.entity działały.
źródło
Miałem ten sam błąd, ale problem był po prostu przypadkowym problemem z moim modelem.
Przypadkowo włożyłem ...
... wewnątrz klasy modelu.
źródło
Alternatywnie możesz przejść TUTAJ - instrukcja instalacji wymaganej biblioteki dll.
Lub możesz pobrać NuGet i zarządzać nim z VS
źródło
Kliknij prawym przyciskiem myszy odwołanie i przejdź do zarządzania pakietami NuGet, a następnie wybierz wszystkie online, a następnie źródło pakietu NuGet w polu tekstowym wyszukiwania typu Entity Framework i zainstaluj je.
źródło
1) Odinstalowywanie Entity Framework ze wszystkich projektów
2) Uruchom ponownie program Visual Studio
3) Ponowna instalacja we wszystkich wymaganych projektach
i zaczęło działać
źródło
Może się zdarzyć, że odniesiesz się do wszystkiego, czego potrzebujesz, a nawet możesz przejść do definicji, naciskając klawisz F12 w klasie DbContext, która przeniesie Cię do przestrzeni nazw System.Data.Entity, ale nadal otrzymujesz to paskudne ostrzeżenie kompilatora. Upewnij się, że platforma docelowa projektu i wersja Entity Framework, której używasz, są zgodne. Przejdź do Project-> Properties-> Application Tab. Zmień platformę docelową (nie można dokładnie powiedzieć, do której z nich pomoże metoda prób i błędów). Tylko moje dwa centy.
źródło
Irytuje mnie też ten problem wiele razy iw końcu znajduję rozwiązanie: przejdź do pliku edmx-> Aktualizuj model z bazy danych-> Odśwież-> Zakończ. Clean Solution-> Rebuild Solution
źródło
możesz spróbować na konsoli menedżera pakietów
PM> EntityFrameWork \ enable-migrations
źródło
Jak sugerowali inni:
Spójrz poniżej i zobacz, czy możesz mi powiedzieć, co jest nie tak:
public class PanelLengthContext : DBContext { }
??!Upewnij się, że nazwa klasy nie zawiera błędów - (rozróżniana jest wielkość liter)!
DbContext
to poprawna pisownia.public class PanelLengthContext : DbContext {}
HTH
źródło
Mam ten sam problem co Ty, nie mogę go zaimplementować w klasie Controller, podczas gdy działa, gdy umieszczam go w klasie modelu. Dodaj te kody na początku swojej klasy kontrolera
źródło
Napotkałem ten sam problem, a następnie dodałem przestrzeń nazw
Po dodaniu działa dobrze
Spróbuj tego, aby rozwiązać problem
a wcześniej zainstaluj strukturę jednostek z Nuget Manager
źródło