2012-03-03 34 views
7

Recibo este error cuando intento iniciar mi sitio web con WebMatrix. Tengo un archivo .cs que realiza una llamada var db = Database.Open("dbase");.¿El nombre 'Base de datos' no existe en el contexto actual?

Tengo una base de datos en mi proyecto llamada "dbase". No tengo ningún archivo web.config ni importes para usar los paquetes de WebMatrix porque estoy lanzando el sitio usando WebMatrix, así que no creo que los necesite. ¿Debo incluir el código en etiquetas Razor, como @{var db = Database.Open("dbase"); }? Esto causa un error para mí también.

¿Qué podría estar causando esto? ¿Alguien tiene alguna solución para esto?

Respuesta

5

Usted necesita una referencia a la asamblea WebMatrix.Data.dll (que es probable que tenga) y también necesitamos una directiva using para la WebMatrix.Data espacio de nombres:

using WebMatrix.Data; 

Eso importar la clase Database para que pueda usarlo sin calificar completamente el nombre.

No está claro por qué cree que no necesita ningún "importaciones" (por que supongo que quiere decir el uso de directivas como la de arriba), pero si se trata de un archivo sin formato C#, entonces sin duda hacer necesidad ellos (o necesitas calificar completamente los nombres de los tipos, lo cual es feo).

+0

¡Muchas gracias por la respuesta! No me di cuenta de la distinción entre archivos .cs y el resto. Ahora agregué la directiva using (disculpas por el término incorrecto, soy un programador de Java que intenta aprender) - Ahora recibo el error 'No se pudo encontrar el tipo o el nombre del espacio de nombres' WebMatrix '(¿falta una directiva de uso? o una referencia de montaje?) '. Supongo que necesito hacer referencia a WebMatrix.Data.Dll? ¿Cómo puedo hacer esto? –

+0

@SimonKiely: No he usado WebMatrix por mi cuenta, pero hubiera pensado * que ya estaría allí. Si hay una parte de "Proyecto de referencias" en su proyecto, busque "Agregar referencia". –

+0

Gracias por la respuesta. No puedo encontrar una referencia como esta. No creo que deba necesitar esto; Debería estar allí, y el código funciona en un archivo .cshtml. Estoy muy confundido. –

7

Me encontré con este problema cuando revisaba las cosas de w3schools en ASP.NET.

Básicamente, las respuestas anteriores son correctas: necesita el ensamblado (DLL) WebMatrix.Data, pero los comentaristas no le dicen cómo solucionar el problema. Aquí se explica cómo:

Primero, copie el archivo WebMatrix.Data.dll en la carpeta/bin de su sitio.

Si no está seguro de dónde conseguirlo, puede hacer que WebMatrix cree un nuevo proyecto utilizando una plantilla habilitada para la base de datos, por ejemplo, Bakery, y sacarlo de la carpeta bin de ese proyecto. O puede buscar su archivo en el disco duro. Tengo una copia en C:\Program Files\Microsoft ASP.NET\ASP.NET Web Pages\v2.0\Assemblies.

Luego,, en su página ASP.NET, importe el conjunto.

Esto es una mala idea para un sitio que va a tener que mantener durante mucho tiempo, pero para los propósitos de esta demostración, solo necesita agregar @using WebMatrix.Data; a la parte superior de la página de sus productos. Debe terminan buscando algo como esto:

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

Ahora debería reconocer el símbolo "base de datos", y todo estará bien.

+0

En mi caso, ya tenía el archivo WebMatrix.Data.dll en la carpeta bin de mi sitio. Esto es probablemente debido a una actualización hecha a WebMatrix. De cualquier manera, es bueno saber dónde se supone que se encuentra. – VoidKing

6

Solo necesita obtener este "Microsoft.AspNet.WebPages.WebData" de NuGet Gallery.

0

En mi caso tenía el paquete nugget instalado pero no encontraba WebMatrix.Data. El problema fue que creé un nuevo proyecto, en su lugar acabo de crear un sitio web (archivo/nuevo/SITIO WEB), luego la Base de datos se encuentra por defecto (supongo que es por el tipo de proyecto que creé la primera vez)

Ahora está funcionando bien, con suerte esto ayudará a alguien.

Cuestiones relacionadas