2012-03-03 16 views
7

Viene visualizzato questo errore quando provo a lanciare il mio sito Web utilizzando WebMatrix. Ho un file .cs che effettua una chiamata var db = Database.Open("dbase");.Il nome "Database" non esiste nel contesto corrente?

Ho un database nel mio progetto chiamato "dbase". Non ho file web.config e nessuna importazione per l'utilizzo di pacchetti WebMatrix poiché sto avviando il sito utilizzando WebMatrix, quindi non credo che avrei bisogno di loro. Devo avvolgere il codice nei tag Razor, come @{var db = Database.Open("dbase"); }? Ciò causa anche un errore.

Cosa potrebbe causare questo? Qualcuno ha qualche soluzione per questo?

risposta

5

Hai bisogno di un riferimento all'assembly WebMatrix.Data.dll (che probabilmente si ha) e si anche bisogno di una direttiva using per il WebMatrix.Data namespace:

using WebMatrix.Data; 

che consente di importare la classe Database in modo da poter utilizzare senza qualificare pienamente il nome.

Non è chiaro il motivo per cui si pensa che non avrebbe bisogno di alcun "importazioni" (da che presumo si intende l'uso di direttive come quella di cui sopra), ma se questo è in un normale file C#, allora certamente fare necessità loro (o è necessario qualificare pienamente i nomi dei tipi, che è brutto).

+0

Grazie mille per la risposta! Non ho realizzato la distinzione tra i file .cs e il resto. Ora ho aggiunto la direttiva using (scuse per il termine errato, sono un programmatore Java che prova ad imparare) - Ricevo ora l'errore "Impossibile trovare il tipo o il nome del namespace" WebMatrix "(manca una direttiva using o un riferimento all'assembly?) '. Presumo che ho bisogno di fare riferimento al WebMatrix.Data.Dll? Come posso fare questo? –

+0

@SimonKiely: Non ho usato WebMatrix da solo, ma avrei * pensato * che sarebbe già stato lì. Se nel progetto è presente una parte "Riferimenti al progetto", cerca "Aggiungi riferimento". –

+0

Grazie per la risposta. Non riesco a trovare un riferimento come questo. Non credo che avrei bisogno di questo; Dovrebbe essere lì e il codice funziona in un file .cshtml. Sono molto confuso. –

7

Mi sono imbattuto in questo problema quando stavo passando attraverso la roba di w3schools su ASP.NET.

Fondamentalmente, le risposte di cui sopra sono corrette: è necessario l'assembly (DLL) WebMatrix.Data, ma i commentatori non ti dicono come risolvere il problema. Ecco come:

Prima, copiare il file WebMatrix.Data.dll nella cartella/bin del sito.

Se non si è sicuri di dove ottenerlo, è possibile fare in modo che WebMatrix crei un nuovo progetto utilizzando un modello abilitato per il database, ad esempio Panetteria, e rimuoverlo dalla cartella bin del progetto. Oppure puoi cercare il tuo disco rigido per il file. Ho una copia in C:\Program Files\Microsoft ASP.NET\ASP.NET Web Pages\v2.0\Assemblies.

Quindi, nella pagina ASP.NET, importare l'assieme.

Questa è una cattiva idea per un sito che dovrai mantenere a lungo, ma ai fini di questa demo, devi solo aggiungere @using WebMatrix.Data; nella parte superiore della pagina dei tuoi prodotti. Dovrebbe sembrare qualcosa del genere:

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

Ora dovrebbe riconoscere il simbolo "Database", e tutto andrà bene.

+0

Nel mio caso ho già il file WebMatrix.Data.dll nella cartella bin dei miei siti. Questo è probabilmente a causa di un aggiornamento fatto a WebMatrix. Ad ogni modo, è bello sapere dove si suppone che si trovi. – VoidKing

6

Hai solo bisogno di ottenere questo "Microsoft.AspNet.WebPages.WebData" dalla Galleria NuGet.

0

Nel mio caso ho installato il pacchetto nugget ma non è stato trovato il WebMatrix.Data. Il problema era che ho creato un nuovo progetto, invece ho appena creato un sito web (file/nuovo/SITO WEB), quindi il Database viene trovato per impostazione predefinita (suppongo sia a causa del tipo di progetto che ho creato la prima volta)

Ora funziona bene, si spera che questo possa aiutare qualcuno.

Problemi correlati