net mvc datos conexion asp asp.net-mvc-3 sql-server-ce sql-server-ce-4

asp.net mvc 3 - datos - Usar SQL Server CE 4 en un host remoto con MVC 3



edit mvc c# (6)

Acabo de actualizar mi host a MVC 3, pero estoy tratando de hacer un "mundo de hola" con SQLCE 4.0, pero acabo de recibir:

Disculpa, ocurrió un error al procesar su solicitud.

Veo mi diseño y todo, pero en lugar de datos veo eso.

En localhost está funcionando como se esperaba

Yo tengo:

<add name="PruebaContext" connectionString="Data Source=|DataDirectory|db.sdf" providerName="System.Data.SqlServerCE.4.0"/>

como connectionString.

Puse el sdf como parte del proyecto, agregué el System.Data.SqlServerCE.dll al proyecto con la copia local en verdadero.

No tengo más ideas. ConnString, el dll está en / bin y está funcionando en localhost.

¿Algunas ideas?

Gracias.

EDITAR

Tengo algunos registros ahora:

Sin el "System.Data.SqlServerCE.dll" en / bin:

No se puede encontrar el Proveedor de datos de .Net Framework solicitado. No puede ser instalado.

System.ArgumentException: no se puede encontrar el proveedor de datos de .Net Framework solicitado. No puede ser instalado.

Lo suficientemente bien No tienen SqlServerCE4.

Con el Dll en copia local, AKA / bin:

No se pueden cargar los componentes nativos de SQL Server Compact correspondientes al proveedor ADO.NET de la versión 8482. Instale la versión correcta de SQL Server Compact. Consulte el artículo KB 974247 para más detalles.

Detalles de la excepción: System.Data.SqlServerCe.SqlCeException: no se pueden cargar los componentes nativos de SQL Server Compact correspondientes al proveedor ADO.NET de la versión 8482. Instale la versión correcta de SQL Server Compact. Consulte el artículo KB 974247 para más detalles.

El KB dice que necesito el dll de x86 y amd64. Leí en alguna parte que si copio dos directorios en / bin, como: / bin / x86 y / bin / amd64. Copié esas carpetas de la carpeta privada de la carpeta de instalación de SqlServerCE 4. Ahora tengo:

Posible discrepancia en la versión del archivo detectada entre ADO.NET Provider y binarios nativos de SQL Server Compact que podría dar como resultado una funcionalidad incorrecta. Esto podría deberse a la presencia de varias instancias de SQL Server Compact de diferentes versiones o debido a binarios incorrectos con el mismo nombre que los binarios de SQL Server Compact. Instale los binarios de SQL Server Compact de la versión correspondiente.

De acuerdo. En la carpeta raíz de SQLServerCE4 también tengo algunos dlls, así que eliminé esas dos carpetas y copié ese dll a / bin:

No se pudo cargar el archivo o ensamblado ''file: /// C: / HostingSpaces / jesusrod / foxandxss.net / wwwroot / mvc3 / bin / sqlceca40.dll'' o una de sus dependencias. Se esperaba que el módulo incluyera un manifiesto de ensamblaje.

Creo que intenté todas las cosas. Scottgu dijo que SqlServerCE 4 debería funcionar en cualquier servidor sin instalación.


Debe asegurarse de tener los dlls de SQL CE 4.0 nativos en su directorio de aplicaciones privadas (por ejemplo, / bin) además del administrado.

Cópielos desde "C: / Archivos de programa (x86) / Microsoft SQL Server Compact Edition / v4.0 / Private / amd64" (o x86 si tiene una aplicación de 32 bits).

También puede ser aconsejable implementar MSVCR90.dll y también se manifiesta. Eche un vistazo a la documentación en C: / Archivos de programa (x86) / Microsoft SQL Server Compact Edition / v4.0 para obtener más información sobre los archivos DLL necesarios y la redistribución.


Estaba teniendo el mismo problema. Estoy tratando de poner en juego una aplicación SQL CE 4.0 con código en mi cuenta de goDaddy.

Empecé a perder el tiempo con varios archivos DLL basados ​​en el hilo de arriba y otros tutoriales, pero nada parecía funcionar. Algo faltaba. Luego leo sobre la respuesta Agregar dependencias desplegables .

Lo hice, lo que creó la carpeta _bin_deployableAssemblies. Luego borré todo de mi carpeta bin excepto la DLL de mi proyecto principal y copié todo de _bin_deployableAssemblies en la carpeta bin.

Limpié todo en la carpeta bin de mi aplicación GoDaddy y rescindí los archivos. Eso funciono. La aplicación se carga y si realizo cambios de código a las clases, el dbcontext recrea la base de datos por mí. Por supuesto, no quiero eso en producción, pero quería saber que todo estaba funcionando.

Intenté utilizar el tutorial ASP sobre la implementación de una aplicación MVC en un entorno de alojamiento (utilizan el alojamiento Cytanium como ejemplo), pero no funcionó para mí en GoDaddy. Tuve que copiar archivos manualmente.

Gracias a todos. Este fue un gran paso para poder sentirme cómodo continuando en MVC y EF.


Esto parece un problema causado por tener varios bits de datos intermedios en un proyecto, donde ha reemplazado los archivos incluidos sin limpiarlos.

Recomiendo hacer una compilación-> Limpiar todo, seguido por asegurarse de que todas sus referencias sean a los archivos DLL nuevos y correctos, y luego asegurarse de que ninguno de los archivos o referencias anteriores aún se encuentren en ningún lugar de su proyecto. Intenta reconstruir una vez hecho esto.

Como este es un proyecto de Hello World, podría ser más fácil comenzar desde cero con un nuevo proyecto e incluir los dlls correctos allí.


No me gusta responder a mi propia respuesta, pero después de horas de trabajo ¡tengo la respuesta!

Necesitamos:

NuGet (Mejor que copiar los dll del archivo de programa)

Con NuGet instalamos:

EFCodeFirst

SqlServerCompact

EFCodeFirst.SqlServerCompact

El problema era que EF necesitaba otro dll para SQL CE 4 (System.Data.SqlServerCe.Entity.dll) y necesitamos poner algo de configuración en web.config:

<system.data> <DbProviderFactories> <remove invariant="System.Data.SqlServerCe.4.0" /> <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> </DbProviderFactories> </system.data>

Con eso, todo está funcionando. He visto 5 errores diferentes, por lo que necesitamos:

Los 2 dll de SQL CE 4, el dll EF, la configuración en web.config y el dll nativo (desde el directorio del paquete donde NuGet descarga la biblioteca).

Parece que la configuración de web.config apunta a una versión concreta de SQL CE .dll y la versión del paquete de RTM es diferente. No puedo encontrar la versión concreta, así que uso el .dll de NuGet.

Eso es todo, SQL CE 4 + EF en un host remoto.


Simplemente use el menú "Proyecto / Agregar dependencias desplegables ..." No estoy seguro si solo es Visual Studio 2010 SP 1.