2010-11-20 37 views
6

He creado un modelo de base de datos con un método de primer modelo utilizando Entity Framework 4.0. Luego creé un script sql usando Generar base de datos desde el modelo ... También creé un archivo de base de datos SQL Server en mi carpeta App_Data. ¿Cómo ejecuto ahora el archivo SQL en este archivo MDF?¿Cómo ejecutar un script SQL en un archivo MDF?

Estoy usando Visual Studio 2010.

+2

¿Puedo obtener algunos comentarios sobre esa votación? – gligoran

+0

Votar. Es útil y claro. Tengo una pista para encontrar una solución a partir de la respuesta de @jedatu a continuación. – Zeeshan

Respuesta

1

he encontrado una solución, pero es un poco hacky.

Tengo SQL Server Express (2008 R2). Entonces cuando genero la base de datos del modelo, me conecto y dejo que construya una base de datos allí. Luego voy al C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA. La parte 10_50 se debe a la versión y puede ser diferente para usted. Entonces en esta carpeta hay un archivo .mdf llamado igual que la base de datos - .mdf. También hay un archivo _log.ldf. Los copié en la carpeta App_Data de mi proyecto.

Esto funciona, pero lleva mucho tiempo generar una nueva base de datos .mdf para cada cambio en el modelo. Entonces hago esto justo antes de enviar.

Si encuentra una mejor respuesta, por favor comparta.

+0

No será una solución útil, ya que la mayoría de los desarrolladores están acostumbrados a crear archivos mdf en sus carpetas de proyecto, no en archivos de programa. – Zeeshan

5

Me encontré con este mismo problema y aquí está lo que funcionó para mí.

Cuando seleccioné "Generar base de datos desde modelo ..." Creé un nuevo archivo MDF. Este proceso funcionó bien y Visual Studio generó el Script SQL necesario. Sin embargo, no sabía cómo conectarme al mismo archivo MDF para ejecutar el script.

Resultó ser bastante fácil.

  1. Haga clic en el guión y elegir de conexión> Conectar

  2. El nombre del servidor y la autenticación ya se deben establecer para la instancia de SQLEXPRESS local.

  3. Haga clic en las Opciones botón

  4. Haga clic en los Parámetros de conexión adicionales pestaña

  5. Pegar en el la ruta de acceso al archivo de base de datos utilizando el siguiente como guía:

    AttachDBFilename = C: \ Path \ To \ Database \ LocalData.mdf; database = LocalData;

  6. Haga clic en el botón Conectar

Si todavía tiene problemas con la conexión puede ser porque ya existe una conexión abierta. Compruebe Server Explorer y, si la conexión está abierta, haga clic con el botón derecho y elija Cerrar conexión.

Este proceso también creará una conexión persistente mientras el script SQL permanezca conectado. Querrá cerrar el script o elegir Hacer clic con el botón derecho> Conexión> Desconectar.

Más información se puede encontrar en esta pregunta: EF4 Generate Database

+0

¿Con qué 'database = LocalData;' tiene que ser reemplazado? – Shimmy

+0

No puedo responder esa pregunta definitivamente. No creo que realmente importe el nombre de la base de datos, pero para mí, siempre haría coincidir el nombre del archivo MDF sin la extensión del curso. – jedatu

+0

gracias, esto funcionó para mí también. – Michael

0

me encontré con el mismo problema, Modelo Primera aproximación en mvc4 usando EF5. Lo que hice fue crear proyecto, agregar un nuevo modelo, agregar entidades y asociaciones en el diagrama de edmx. Haga clic derecho en el diagrama y seleccione 'Generar base de datos del modelo'. Esto genera el archivo sql.

Ahora agregue un archivo mdf, por ejemplo, Database1.mdf (Agregar> Nuevo elemento> Datos> Base de datos de SQL Server) en la carpeta App_Data en el explorador de soluciones.

Haga clic derecho> Abrir en este archivo MDF. Ahora en el panel de propiedades tiene la cadena de conexión. Solo copia eso tal como es.

volver a la secuencia de comandos SQL generado, haga clic derecho> Exeecute. Una ventana emergente pregunta por los parámetros de conexión. Asegúrese de tener el valor correcto en Nombre de servidor (use el nombre de su PC o 127.0.0.1).

Ahora en Opciones, haga clic en la ficha Parámetros de conexión adicional y pegar la cadena de conexión copiado de propiedades del archivo MDF.

Esto funcionó perfectamente de mí y es bastante lógico. No hay necesidad de jugar directamente con el directorio de instalación de SQL Server.

0

grandes respuestas más arriba, pero que tenía que hacer unos pasos más en VS2013 pero resolvió con la ayuda aquí de la siguiente manera.

  1. que creó un modelo de ADO.NET existente .mdf
  2. clic derecho -> Generar base de datos a partir del modelo
  3. Haga clic derecho en el .mdf en el Explorador de soluciones y Open
  4. En el panel de propiedades conexión copia cadena al portapapeles
  5. En la ventana SQLQuery creado por ADO Modelo cambiar conexión clic
  6. En la nueva ventana Conectar con el servidor -> Parámetros de conexión adicionales -> cadena de conexión pegar desde el portapapeles
  7. En el Explorador de servidores, haga clic derecho la base de datos -> Nueva consulta
  8. copiar y pegar la consulta desde ADO script generado para nueva ventana de consulta
  9. cambio en el uso [yourdatabase.mdf] para utilizar [LongPath] donde LongPath es la misma largo camino enumerado en el menú desplegable en la parte superior. La forma más fácil es comenzar a escribir y CTRL-SPACE.
  10. Ejecute la consulta
  11. Guarde LongPath porque puede simplemente pegarlo en el USE [] en cualquier consulta nueva generada por ADO.

Espero que esto ayude a alguien - ¡Feliz codificación!

+1

Han pasado algunos años desde mi pregunta y respuesta originales, pero desde entonces he encontrado que LINQPad puede manejar archivos '.mdf'. Eche un vistazo a esto: http://stackoverflow.com/questions/4824005/can-linqpad-connect-to-an-mdf-file – gligoran

Cuestiones relacionadas