9

¿Cómo implemento SQL CE 4.0 con EF4 en un proveedor de alojamiento compartido para ASP.NET MVC 2.0?¿Cómo implementar SQL CE 4 CTP para alojamiento compartido?

He incluido System.Data.SqlServerCe.dll y los directorios amd64 + x86 en mi carpeta bin, pero sigo obteniendo un "proveedor de .NET no encontrado". Me doy cuenta de que actualmente está en CTP, pero esto es solo para fines de prueba. Mi proyecto + host está configurado para .NET 4.0

Respuesta

3

Hay dos posibilidades que pueden causar este problema:

  1. Al instalar SQL CE en la máquina de desarrollo con el instalador de Windows, una entrada a la máquina. config se agrega para el proveedor. Sin embargo, cuando se implementa en el alojamiento, la entrada proveedor no existir posiblemente lo que debería agregar esta entrada a tu web.config (especialmente para EF para trabajar supongo):

    <system.data> 
        <DbProviderFactories> 
        <add 
        name="SQL Server Compact Edition 4.0" 
        invariant="System.Data.SqlServerCe.4.0" 
        description=".NET Framework Data Provider for Microsoft SQL Server Compact Edition 4.0" 
        type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> 
        </DbProviderFactories> 
    </system.data> 
    
  2. Editar: Afortunadamente Microsoft resolvió el problema de implementación en SQL CE 4.0 RTM (versión 4.0.8482.1) que se lanzó el 1/12/2011. La carpeta "Privada" contiene los archivos DLL relacionados con x64 y x86, y ahora también contiene los archivos DLL necesarios de tiempo de ejecución de C++ en las subcarpetas amd64 \ Microsoft.VC90.CRT y x86 \ Microsoft.VC90.CRT. Entonces, de ahora en adelante, al desplegar todas las DLL y carpetas en la carpeta privada, se despliegan todos los archivos necesarios para que Compact funcione correctamente. SQL CE 4.0 CTP parece prometedor, pero la implementación todavía apesta, todavía tenemos que incluir varias DLL nativas (directorios amd64 y x86, esto es feo) y además hay una dependencia de Visual C++ 2008 Runtime Libraries SP1 que nadie parece ser conciente de. ¿Cómo se supone que debemos asegurarnos de que un alojamiento compartido tenga esta solución? Me gustaría poder implementar simplemente al incluir System.Data.SqlServerCe.dll (y System.Data.SqlServerCe.Entity.dll para el soporte de EF). Espero que publiquen una versión totalmente administrada (como VistaDB) en el futuro. Al menos MS debería haber obligado a este tiempo de ejecución junto con la instalación de .Net Framework 4.0, ver más abajo para más información:

    Instalación de SQL Server 4.0 compacto CTP1 utilizando la (.exe) Instalador de Windows , también instala las bibliotecas en tiempo de ejecución de Visual C++ 2008 SP1. Si SQL Server Compact 4.0 CTP1 es desplegados de forma privada en la carpeta de la aplicación la siguiente tienen que estar presentes en la máquina para SQL Server Compact funcione correctamente :

    1.Installing el .NET Framework 3.5 SP1 también instala Visual C++ 2008 Runtime Libraries SP1.

    2.Visual C++ 2008 SP1 bibliotecas de ejecución puede ser descargado e instalado de la ubicación se indica a continuación: http://go.microsoft.com/fwlink/?LinkId=194827

    cuenta que la instalación de .NET Framework 2.0 o 3.0 o 4 no instala el Visual C++ 2008 Runtime Bibliotecas SP1.

+0

Alguna idea de cómo implementar el Visual C++ 2008 Runtime para alojamiento compartido, si no está ya desplegado? –

+1

No estoy seguro si puede implementar el tiempo de ejecución. Tal vez sea útil determinar las DLL de tiempo de ejecución requeridas y desplegar en las carpetas bin \ x86 y bin \ amd64. Por cierto, agregué otra posibilidad (una configuración web.config) en mi respuesta que puede resolver su problema. – gtdev

10

Con Visual Studio 2010 ahora hay una manera fácil de implementar SQL CE 4 a un entorno de alojamiento compartido a través del uso de "Dependencias" desplegables. No es necesario copiar manualmente dlls a su carpeta bin o modificar su web.config. Ambos están hechos para ti.

"Podemos incluir montajes necesarios en un proyecto de aplicación Web Sitio Web o con unos pocos pasos simples. Hace clic derecho en el nodo del proyecto en el Explorador de soluciones y selecciona 'Añadir desplegables dependencias ...' elemento de menú contextual".

Deployable Dependencies http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-63-56-metablogapi/4403.MenuItem_5F00_1.png

(http://blogs.msdn.com/b/webdevtools/archive/2011/01/06/how-to-bin-deploy-sql-compact-edition-4-0-and-razor-web-projects.aspx)

+1

¡Esta característica es tan asombrosa! –

+1

Esta función ya no existe en 2012 y en adelante: [Falta la opción Deployable Dependencies en Visual Studio 2012] (http://samirvaidya.blogspot.fr/2013/02/deployable-dependencies-option-missing.html) – ChrisW

+0

También no más necesario. Desde el mismo enlace, "fue integrado en NuGet Package Manager junto con Visual Studio 2012, de modo que todos los ensamblajes necesarios se implementan de forma automática". –

Cuestiones relacionadas