entity-framework - para - error al ejecutar el generador de codigo seleccionado no se pueden recuperar metadatos
Entity Framework 4 y SQL Compact 4: ¿Cómo generar la base de datos? (7)
Estoy desarrollando una aplicación con Entity Framework 4 y SQL Compact 4, utilizando un enfoque Model First. He creado mi EDM y ahora quiero generar una base de datos SQL Compact 4.0 para que actúe como un almacén de datos para el modelo. Presento el Asistente para generar base de datos y hago clic en el botón Nueva conexión para crear una conexión para el archivo generado. Aparece el cuadro de diálogo Elegir origen de datos , pero SQL Compact 4.0 no aparece en la lista de orígenes de datos disponibles:
Estoy ejecutando VS 2010 SP1 (beta) y he instalado las herramientas de VS 2010 para SQL Compact 4.0. Puedo crear una conexión de datos SQL Compact 4.0 desde el Explorador de servidores. Solo en el Asistente para generar bases de datos no aparece la opción 4.0. Por cierto, mi instalación de SQL Compact 4.0 incluye System.Data.SqlServerCe.Entity.dll
. Así que debería tener los componentes de SQL Compact que necesito.
¿Estoy haciendo algo incorrectamente, o esto es un error? ¿Alguien tiene una solución o una solución? Gracias por tu ayuda.
Como solución alternativa, estoy utilizando el Asistente para generar bases de datos para generar un script SQL Compact 3.5, que estoy ejecutando contra una base de datos SQL Compact 4.0 en blanco creada en el Explorador de soluciones VS 2010. Aquí están los pasos para llevar a cabo esa tarea:
Paso 1: Ejecutar el Asistente para generar base de datos . Solicita la creación de un archivo en su primera página, por lo que debe crear un archivo SQL Compact 3.5. Este archivo es un dummy, por lo que no importa cómo lo nombre.
Paso 2: complete el asistente para crear el script DDL que configurará la nueva base de datos.
Paso 3: Eliminar el archivo ficticio creado en el Paso 1.
Paso 4: Use el Explorador de servidores de VS 2010 para crear el archivo real de SQL Compact 4.0 que usará en su proyecto.
Paso 5: El Asistente para generar base de datos coloca dos referencias a SQL Compact "3.5" en el archivo EDMX; estas referencias deben cambiarse a "4.0". Abra el archivo EDMX en el Editor XML de VS 2010 (haga clic con el botón derecho y seleccione "Abrir con" para acceder al Editor XML). La línea 7 debe contener las referencias "3.5". Cambie estos a "4.0" y guarde el archivo.
Paso 6: Abra el archivo de script EDMX.SQLCE generado en VS 2010. VS indicará (a través de una pancarta en el panel de trabajo) que el script está desconectado. Haga clic con el botón derecho en el espacio en blanco sobre el banner y seleccione Conexión> Conectar en el menú contextual que aparece. Se abre un cuadro de diálogo de conexión: utilícelo para conectar el script a la base de datos SQL Compact 4.0 que creó en el Paso 4.
Paso 7: haga clic con el botón derecho en el espacio en blanco del script nuevamente y seleccione Ejecutar SQL en el menú contextual. La secuencia de comandos se ejecutará y obtendrá el mensaje de resultados habitual en un panel debajo de la secuencia de comandos. Suponiendo una ejecución exitosa, la base de datos se configura para que coincida con el modelo de datos de la entidad.
Paso 8: También debemos asegurarnos de que App.config / web.config no apunte al archivo ficticio. Si es, cámbielo al archivo CE 4.0 real creado en el Paso 4 anterior. De lo contrario, tenemos problemas con la regeneración del script cuando realizamos cambios en el modelo. En el archivo de configuración, cambie 3.5 a 4.0 también.
En ese momento, debería poder usar Entity Framework 4 para trabajar con su base de datos.
Otro más, use la herramienta de base de datos WebMatrix.
Para responder a los comentarios a continuación y diríjalos de acuerdo a: http://blogs.msdn.com/b/sqlservercompact/archive/2011/01/12/microsoft-sql-server-compact-4-0-is-available-for-download.aspx
Estos magos no funcionan.
Diseñadores en los proyectos de VB o C # de Windows en Visual Studio 2010 SP1 Beta: Los siguientes asistentes no funcionan con Compact 4.0 en el sistema de proyectos de Windows. Los desarrolladores pueden agregar manualmente la referencia al proveedor ADO.NET para Compact 4.0 (System.Data.SqlServerCe) para desarrollar programas para Compact 4.0 en los proyectos de Windows:
- El Asistente de configuración de origen de datos que se utiliza para configurar conjuntos de datos.
- El asistente Configurar configuración de datos que se utiliza para configurar la sincronización de datos y esquema con SQL Server mediante Sync FX.
- El asistente del modelo de datos de entidad que se utiliza para generar entidades a partir de una base de datos compacta.
Aquí están los alrededores de trabajo aceptados para estos temas. http://erikej.blogspot.com/2010/11/using-entity-framework-with-sql-server.html
Probablemente también necesite instalar las herramientas de SQL Server Compact 4 , si no se instaló directamente cuando se instaló Visual Studio 2010 SP1, puede instalarlo. Esto es lo que funcionó para mí cuando tuve el problema.
Puede usar IDatabaseInitializer y crear la base de datos en código usando
if (File.Exists("Test.sdf"))
File.Delete("Test.sdf");
string connStr = "Data Source = Test.sdf; Password = <password>";
SqlCeEngine engine = new SqlCeEngine(connStr);
engine.CreateDatabase();
engine.Dispose();
SqlCeConnection conn = null;
try {
conn = new SqlCeConnection(connStr);
conn.Open();
SqlCeCommand cmd = conn.CreateCommand();
cmd.CommandText = "CREATE TABLE myTable (col1 int, col2 ntext)";
cmd.ExecuteNonQuery();
catch {
finally {
conn.Close();
http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceengine(v=vs.80).aspx
Puedo ejecutar Generate Database Wizard sin ningún problema de mi proyecto Chinook.Data, asegúrese de tener una cadena de conexión adecuada en su app.config. http://erikej.blogspot.com/2010/11/using-entity-framework-with-sql-server.html
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="ChinookEntities" connectionString="metadata=res://*/ChinookModel.csdl|res://*/ChinookModel.ssdl|res://*/ChinookModel.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="Data Source=C:/projects/Chinook/Chinook40.sdf"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
Según tengo entendido, la versión actual de VS 2010 no tiene soporte para SQL CE 4.0. Se debe incluir en VS 2010 SP1 (actualmente en Beta). Consulte esta publicación de blog que también describe el uso de EF Model con SQL CE 4.0 en SP1.
Editar:
He encontrado esta workaround .