2012-03-03 23 views
7

Otrzymuję ten błąd, gdy próbuję uruchomić moją witrynę za pomocą narzędzia WebMatrix. Mam plik .cs, który wywołuje var db = Database.Open("dbase");.Nazwa "Baza danych" nie istnieje w bieżącym kontekście?

Mam bazę danych w moim projekcie o nazwie "dbase". Nie mam żadnego pliku web.config ani żadnych importów do używania pakietów WebMatrix, ponieważ uruchamiam witrynę za pomocą narzędzia WebMatrix, więc nie sądzę, żebym ich potrzebował. Czy muszę zawijać kod w etykietach maszynki do golenia, takich jak @{var db = Database.Open("dbase"); }? Powoduje to również błąd dla mnie.

Co może być przyczyną? Czy ktoś ma jakieś rozwiązania?

Odpowiedz

5

Potrzebny jest odwołanie do zestawu WebMatrix.Data.dll (który zapewne masz) i również potrzebujemy dyrektywy using dla przestrzeni nazw WebMatrix.Data:

using WebMatrix.Data; 

To będzie zaimportować klasę Database więc można go używać bez pełnej kwalifikacji nazwy.

Nie jest jasne, dlaczego uważasz, że nie potrzebujesz żadnego "importu" (przez co zakładam, że masz na myśli używanie dyrektyw podobnych do tego powyżej), ale jeśli jest to zwykły plik C#, to na pewno musisz mieć do (lub musisz w pełni kwalifikować nazwy typów, które są brzydkie).

+0

Dziękuję bardzo za odpowiedź! Nie zdawałem sobie sprawy z rozróżnienia między plikami .cs a resztą. Dodałem teraz dyrektywę using (przeprosiny za niepoprawny termin, jestem programistą Java próbującym się uczyć) - teraz otrzymuję komunikat o błędzie "Nie można znaleźć nazwy typu lub przestrzeni nazw" WebMatrix "(czy brakuje dyrektywy użycia lub odniesienie do zespołu?) ". Zakładam, że muszę odwołać się do pliku WebMatrix.Data.Dll? Jak mogę to zrobić? –

+0

@SimonKiely: Sam nie korzystałem z WebMatrix, ale mogłem * pomyśleć *, że już tam będzie. Jeśli w projekcie jest część "Referencje projektu", poszukaj "Dodaj referencję". –

+0

Dziękuję za odpowiedź. Nie mogę znaleźć takiego odnośnika. Nie wierzę, że powinienem tego potrzebować; Powinien tam być, a kod działa w pliku .cshtml. Jestem zdezorientowany. –

7

Wpadłem na ten problem, gdy przechodziłem przez rzeczy w3schools na ASP.NET.

Zasadniczo powyższe odpowiedzi są poprawne: potrzebny jest zbiór (DLL) WebMatrix.Data, ale komentatorzy nie mówią, jak rozwiązać problem. Oto, w jaki sposób:

Najpierw, skopiuj plik WebMatrix.Data.dll do folderu Twojej witryny/bin.

Jeśli nie masz pewności, skąd je pobrać, możesz mieć WebMatrix utworzyć nowy projekt za pomocą szablonu obsługującego bazy danych - powiedzmy, Bakery - i wyciągnij go z folderu bin tego projektu. Możesz też przeszukać plik na dysku twardym. Mam kopię w C:\Program Files\Microsoft ASP.NET\ASP.NET Web Pages\v2.0\Assemblies.

Następnie, na stronie ASP.NET zaimportuj zespół.

To jest zły pomysł na witrynę, którą będziesz musiał utrzymywać przez długi czas, ale do celów tego demo wystarczy dodać @using WebMatrix.Data; do góry strony z produktami. Powinno to wyglądać mniej więcej tak:

@using WebMatrix.Data; 
@{ 
var db = Database.Open("SmallBakery"); 
var selectQueryString = "SELECT * FROM Product ORDER BY Name"; 
} 

Teraz powinien rozpoznać symbol "Baza danych", a wszystko będzie dobrze.

+0

W moim przypadku już miałem plik WebMatrix.Data.dll w folderze bin mojej witryny. Jest tak prawdopodobnie z powodu aktualizacji dokonanej na WebMatrix. Tak czy inaczej, dobrze jest wiedzieć, gdzie ma się znajdować. – VoidKing

6

Po prostu musisz pobrać "Microsoft.AspNet.WebPages.WebData" z galerii NuGet.

0

W moim przypadku zainstalowałem pakiet nugget, ale nie znajdowałem pliku WebMatrix.Data. Problem polegał na tym, że utworzyłem nowy projekt, zamiast tego właśnie utworzyłem stronę internetową (file/new/WEBSITE), wtedy domyślnie znajduje się Baza danych (domyślam się, że jest to spowodowane rodzajem projektu, który stworzyłem po raz pierwszy)

Teraz działa dobrze, mam nadzieję, że to pomoże komuś.

Powiązane problemy