37

Estoy trabajando en Visual Web Developer 2010 Express y utilizando Entity Framework code-first CTP. Puedo hacer esto con el nuevo SQL Server CE pero no puedo encontrar una cadena de conexión para trabajar con SQL Server Express.Cadena de conexión de SQL Server Express para Entity Framework Code First

Este, utilizando la versión beta de SQL Server CE, funciona bien (la base de datos se crea y vuelve a crear en los cambios del modelo).

<add name="TrempimModel" 
    connectionString="data source=|DataDirectory|TrempimModel.sdf" 
    providerName="System.Data.SqlServerCe.4.0" /> 

Ésta, que he copiado de la cadena aspnetdb conexiones,

<add name="TrempimModel" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI; 
    AttachDBFilename=|DataDirectory|TrempimModel.mdf;User Instance=true" 
    providerName="System.Data.SqlClient" /> 

da el mensaje siguiente en el inicio:

No se ha podido completar la operación. El SqlConnection suministrado no especifica un catálogo inicial

Entonces, ¿cómo hacer que funcione con SQL Server Express?

Respuesta

59

El problema con la cadena de conexión aquí es:

<add name="TrempimModel" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI; 
         AttachDBFilename=|DataDirectory|aspnetdb.sdf; 
         User Instance=true" 
    providerName="System.Data.SqlClient" /> 

Básicamente, se está definiendo lo que significa "servidor" que se está conectando - Pero usted es no diciendo lo que la base de datos dentro del archivo para conectar a. Además, la extensión de archivo para archivos de base de datos de SQL Server Express es .mdf (no .sdf - eso es SQL Server Compact Edition) - ¡también debe tener esto en cuenta! (fue un error tipográfico, de acuerdo con el comentario de OP).

es necesario definir un extra database=.... (o Initial Catalog=.....) en la cadena de conexión:

<add name="TrempimModel" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI; 
         database=YourDatabaseName; 
         AttachDBFilename=|DataDirectory|aspnetdb.mdf; 
         User Instance=true" 
    providerName="System.Data.SqlClient" /> 

entonces debería funcionar bien.

Para obtener más información y toneladas de ejemplos, consulte el sitio web ConnectionStrings.

+0

a) la extensión sdf era un error tipográfico. Estaba usando mdf en la cadena de conexión, edité la pregunta para reflejar eso. la sugerencia de especificar la base de datos resolvió mi problema, gracias. Estoy usando el mismo nombre que el nombre del archivo: ¿es correcto o puede causar algún problema en el futuro? – GilShalit

+0

@GilShalit: depende de cómo se llame realmente la base de datos dentro de su MDF; es muy probable que sea el mismo nombre que el nombre del archivo. Tendría que verificarlo conectando el MDF a una instancia completa de SQL Server y ver en qué se llama realmente la base de datos almacenada dentro del MDF. –

+0

, ya que parece saber mucho sobre esto, no creo que tenga un momento en que pueda echar un vistazo a mi pregunta ... Puedo hacer que la cadena de conexión funcione, pero si intento editar/usar el base de datos, recibo tantos errores :(- http://stackoverflow.com/questions/5924553/entity-framework-error-connecting-to-sql-server-express-after-mounting-connecting y vuelto a publicar en MSDN - http: //social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/1ec3ff63-d8a1-4844-942d-c2c05ed8078e – Wil

Cuestiones relacionadas