Estoy usando Visual Studio 2008 Pro.No se puede obtener sql server compact 3.5/4 para trabajar con ASP .NET MVC 2
Probablemente me falta algo muy obvio aquí, pero he estado tratando de hacer que el CTP para Sql Server compact 4 funcione en mi aplicación asp.net mvc. Puedo encontrar al lado de ninguna instrucción sobre cómo configurar esto o una aplicación de ejemplo en funcionamiento. Mi objetivo es una instalación privada, así que puedo incluirlo en mi aplicación web sin tener que configurar el servidor sql en el alojamiento de mi dominio. Esto es realmente solo yo disparando la brisa y tratando de resolver esto. No planeo alojar un mercado o algo con esto.
Por lo tanto, he copiado todas las dll de esa instalación en la dirección base 4.0 (c: \ Archivos de programa \ Sql Server compact \ v4.0) a una carpeta lib en mi aplicación. Establecí la opción Copiar en dirección de salida en 'Copiar si es más nuevo'. Luego hago referencia a System.Data.SqlServerCE dll y establezco 'Copiar local' a True.
Creé un archivo sdf a través de Sql Studio Express. Una nota importante es que no vi una opción para crear una versión CE 4.0 de este archivo, por lo que se creó utilizando CE 3.5. Creo algunas tablas, agrego algunas filas a esas tablas, copio el archivo * .sdf a mi directorio App_Data. Vale la pena mencionar que, desde VS VS 2008, este archivo nunca aparece en mi proyecto, pero sí existe en la ubicación física del directorio App_Data. No estoy seguro de por qué es esto.
A continuación, sólo tratar de hacer una conexión básica a través de sdf:
SqlCeConnection conn = new SqlCeConnection("DataSource=rpg.sdf");
Esto produce el error abajo:
Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8402. Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details.
Calculo de aquí, que acababa de intentar conseguir Sql CE 3.5 para trabajar. Actualizo mi instalación local de Sql CE 3.5 a sp2. Copio los dlls en la ubicación base (c: \ Program Files \ Sql Server compact \ v3.5), incluida la eliminación y la lectura de la versión del dll System.Data.SqlServerCE de las referencias de mi proyecto.
Lo curioso es que cuando hago clic derecho y miro las propiedades del dll SqlServerCE al que se hace referencia, siempre dice que es la versión 4.0.0.1.
Chicos, realmente podría usar alguna dirección aquí. He buscado desbordamiento de pila, los documentos de ayuda, libros en línea y en Google. Realmente no he encontrado nada que tome esto desde la parte superior para CE 3.5 o 4.0 y me dice exactamente qué dll agregar, dónde ponerlos, cómo hacer referencia a ellos, cómo agregar el archivo .sdf a mi proyecto, conectarse a él, y consultar desde allí. Me encontré con algunas menciones de una aplicación de muestra de portal IBuySpy que se suponía que debía usar Sql CE 3.5, pero no podía navegar el laberinto de descarga msdn para acceder a ella. Idealmente, quiero configurar un despliegue privado para CE 4.0.
Soy todo oídos. Sugerencias, puntos, lo que sea muy apreciado. ¡Gracias!
SÍ, HE VISTO LA KB. No ayudó
lo ve aquí: http://support.microsoft.com/kb/974247
RESULTADOS DE CORFLAG
bien, intentado eso y estos son mis resultados: C: \ Desarrollo \ Mvc2MessingAround \ Mvc2MessingAround \ bin \ Lib> corflags System.Data. SqlServerCe.dll Microsoft (R) .NET Framework CorFlags Conversion Tool. Versión 3.5.21022.8 Copyright (c) Microsoft Corporation. Todos los derechos reservados.
Version : v2.0.50727
CLR Header: 2.5
PE : PE32
CorFlags : 9
ILONLY : 1
32BIT : 0
Signed : 1
Hubiera jurado que instalé la versión x86 de ambas versiones de Sql CE (3.5/4). El instalador podría haberse confundido de alguna manera porque mi procesador tiene capacidad de 64 bits, pero estoy ejecutando Windows XP Sp 3 32 bit. Los resultados parecen indicar que es de 64 bits. Es ese el caso?
AÑADIDO DETALLES
Hasta la fecha, las configuraciones a continuación se han probado en 2 máquinas. Ambos son Windows XP Sp3 de 32 bits con un procesador de 64 bits. El entorno de desarrollo en ambos es VS 2008 Pro. Los resultados en la máquina 2 vienen después de una nueva instalación del Sql CE 4 Ctp.
CONFIGURACIÓN # 1
myapp\bin\
System.Data.SqlServerCe.dll
myapp\bin\private
amd64
x86
myapp\bin\private\x86
sqlceca40.dll
sqlcecompact40.dll
sqlceer40EN.dll
sqlceme40.dll
sqlceqp40.dll
sqlcese40.dll
myapp\bin\private\amd64
sqlceca40.dll
sqlcecompact40.dll
sqlceer40EN.dll
sqlceme40.dll
sqlceqp40.dll
sqlcese40.dll
error:
An exception of type 'System.Data.SqlServerCe.SqlCeException' occurred in System.Data.SqlServerCe.DLL but was not handled in user code
Additional information: Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8402. Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details.
Código:
SqlCeConnection conn = new SqlCeConnection();
CONFIGURACIÓN 2
Igual que el n.º 1, pero con System.Data.SqlServerCE.Entity.dll en la dirección myapp \ bin.
Los errores de página antes de presionar el código anterior. Este es el mensaje:
No se pudo cargar el archivo o ensamblado 'System.Data.SqlServerCe.Entity' o una de sus dependencias. Este ensamblado está creado por un tiempo de ejecución más nuevo que el tiempo de ejecución cargado actualmente y no se puede cargar.
Descripción: Se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.
Detalles de la excepción: System.BadImageFormatException: No se pudo cargar el archivo o ensamblado 'System.Data.SqlServerCe.Entity' o una de sus dependencias. Este ensamblado está creado por un tiempo de ejecución más nuevo que el tiempo de ejecución cargado actualmente y no se puede cargar.
He comprobado la configuración del proyecto en VS 2008 Pro y el marco .Net 3.5 se establece como el objetivo.
CONFIGURACIÓN 3
Igual que el # 1, a excepción de la System.Data.SqlServerCe.dll está referenciado desde el miaplicacion \ bin \ carpeta privada.
Los resultados son los mismos que en la CONFIGURACIÓN # 1 (el mensaje de error es 100% igual y el error ocurre en la misma línea de código).
configuración correcta
Según las instrucciones de Erik (tenía los seguí con más cuidado), la configuración debe ser
myapp\bin
x86
amd64
System.Data.SqlServerCE.dll
Referencia del System.Data.SqlServerCE.dll directamente de la carpeta bin para el código. Mi locura era pensar que la carpeta privada necesitaba ser incluida, pero no es así. No coloque System.Data.SqlServerCE.Entity.dll en la carpeta bin a menos que esté utilizando una solución .net 4.0. No creo que dll funcione con 3.5.
enlace útil:
System.Data.SqlServerCe.dll es Cualquier CPU .. – ErikEJ
Usando config 3, no hay archivo Entity.dll. Estructura de carpeta incorrecta! Copie los siguientes contenidos del directorio (incluidas las carpetas x86 y amd64) en la carpeta bin de su aplicación ASP.NET: C: \ Archivos de programa \ Microsoft SQL Server Compact Edition \ v4.0 \ Privado No debe haber una carpeta "Privada" en su carpeta asp.net bin. Debajo de su carpeta bin, una carpeta x86 y amd64, cada una con los archivos correctos. – ErikEJ
Esto también ocurre con VS 2010 y ASP.NET MVC 3 Beta – Jedidja