29 votes

Utilisation de SQL Server CE 4 sur un hôte distant avec MVC 3

Je viens de mettre mon hôte à MVC 3, mais je vais essayer de faire un "hello world" à l'aide de SQLCE 4.0 mais je viens de recevoir:

Désolé, une erreur s'est produite lors le traitement de votre demande.

Je vois ma mise en page et tout, mais au lieu de données que je vois cela.

Sur localhost fonctionne comme prévu

J'ai:

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

comme connectionString.

J'ai mis le sdf dans le cadre de ce projet, j'ai ajouté de l' System.Data.SqlServerCE.dll le projet avec la copie locale de vrai.

Je n'ai plus d'idées. Le connString, la dll est dans /bin et travaille en localhost.

Des idées?

Merci.

MODIFIER

J'ai quelques journaux d'aujourd'hui:

Sans l' "System.Data.SqlServerCE.dll" sur /bin:

Impossible de trouver la demande .Net Framework Fournisseur De Données. Il ne peut pas être installé.

Système.ArgumentException: Impossible de trouver le demande .Net Framework Fournisseur De Données. Il ne peut pas être installé.

Assez Fine. Ils n'ont pas SqlServerCE4.

Avec la Dll sur la copie locale, AKA /bin:

Impossible de charger les composants natifs de SQL Server Compact correspondant à la ADO.NET fournisseur de version 8482. Installer la bonne version de SQL Server Compact. Reportez-vous à l'article de la 974247 pour plus de détails.

Détails De L'Exception: System.Les données.SqlServerCe.SqlCeException: Impossible de charger les composants natifs de SQL Server Compact correspondant à la ADO.NET fournisseur de version 8482. Installer la bonne version de SQL Server Compact. Reportez-vous à l'article de la 974247 pour plus de détails.

Le KO dit que j'ai besoin de la dll à partir de x86 et amd64. J'ai lu quelque part que si je copie deux répertoires /bin, comme: /bin/x86 et /bin/amd64 . J'ai copié des dossiers à partir du dossier privé de SqlServerCE 4 dossier d'installation. Maintenant que j'ai obtenu:

Possible fichier incompatibilité de version entre détecté ADO.NET Fournisseur de et des binaires natifs de SQL Server Compact qui peut entraîner une erreur de fonctionnalité. Cela pourrait être dû à la présence de plusieurs instances de SQL Server Compact de versions différentes ou à cause d'une mauvaise binaires avec le même nom que SQL Server Compact binaires. S'il vous plaît installer SQL Server Compact binaires de la version correspondante.

Ok. Sur le dossier racine de SQLServerCE4 j'ai quelques dll trop, alors j'ai supprimé que les deux dossiers et copié que dll /bin:

Impossible de charger le fichier ou l'assembly 'file:///C:\HostingSpaces\jesusrod\foxandxss.net\wwwroot\mvc3\bin\sqlceca40.dll" ou une de ses dépendances. Le module a été prévu pour contenir un manifeste d'assembly.

Je pense que j'ai essayé toutes les choses. Scottgu dit que SqlServerCE 4 devrait fonctionner sur n'importe quel serveur sans installation.

31voto

Jesus Rodriguez Points 4441

Je n'aime pas à répondre à ma propre réponse, mais après des heures de travail, j'ai la réponse!

Nous avons besoin de:

NuGet (Mieux que la copie de la dll à partir de fichier de programme)

Avec NuGet nous installer:

EFCodeFirst

SqlServerCompact

EFCodeFirst.SqlServerCompact

Le problème était que EF besoin d'une autre dll for SQL CE 4 (System.Data.SqlServerCe.Entity.dll) et nous avons besoin de mettre un peu de configuration sur le 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>

Avec ça, tout fonctionne. J'ai vu comme 5 différentes erreurs, nous avons donc besoin de:

Les 2 dll à partir de SQL CE 4, l'EF dll, la config dans le web.config et la dll native (le répertoire du package où NuGet téléchargements de la bibliothèque).

Il semble que le web.config config vers une version concrète de la SQL CE .dll et la version de la RTM paquet est différent. Je ne peux pas trouver la version concrète j'ai donc utiliser le .dll à partir de NuGet.

C'est tout, SQL CE 4 + EF sur un hôte distant.

21voto

Utilisez simplement le menu "Projeter / Ajouter des dépendances déployables ..." Je ne sais pas s'il s'agit uniquement de Visual Studio 2010 SP 1.

4voto

WillG Points 31

Vous devez vous assurer que vous avez le natif SQL CE 4.0 dll dans votre répertoire de l'application (par exemple, \bin) en plus de la gestion de l'un.

Copiez-les à partir "C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0\Private\amd64" (ou x86 si vous avez une application 32 bits).

Il peut également être judicieux de déployer la MSVCR90.dll et c'est trop manifeste. Jetez un oeil à la documentation en C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0 pour plus d'informations sur les Dll requises et de la redistribution.

2voto

blueberryfields Points 7097

Cela ressemble à un problème qui est causé par le fait d'avoir plusieurs intermédiaires bits de données dans un projet, où vous avez remplacé les fichiers inclus sans nettoyage.

Je recommanderais de faire un Build->Clean, suivi par assurant que tous vos références sont de la nouvelle, de corriger Dll, et qu'aucun des anciens fichiers ou références sont toujours autour de n'importe où dans votre projet. Tenter de reconstruire une fois que c'est fait.

Puisque c'est un hello world projet, il peut être plus facile de commencer à partir de zéro avec un nouveau projet, et inclure les dll dans il.

1voto

Gabriel Guimarães Points 1851

essayez d'installer SQL CE manuellement.

http://www.microsoft.com/download/en/details.aspx?id=17876

Bonne chance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X