Entity Framework 4 et SQL Compact 4: Comment générer une base de données?

je développe une application avec Entity Framework 4 et SQL Compact 4, en utilisant une première approche modèle. J'ai créé mon EDM, et maintenant je veux générer une base de données SQL Compact 4.0 pour agir comme un magasin de données pour le modèle. Je soulève le Générer Le Magicien De Base De Données et cliquez sur Nouvelle Connexion bouton pour créer un lien pour le fichier généré. Choisir La Source De Données le dialogue apparaît, mais SQL Compact 4.0 n'est pas listé dans la liste des données disponibles sources:

enter image description here

J'exécute VS 2010 SP1 (beta) et j'ai installé les outils VS 2010 pour SQL Compact 4.0. Je peux créer une connexion de données SQL Compact 4.0 à partir de L'Explorateur de serveur. C'est seulement dans le Générer Le Magicien De Base De Données que l'option 4.0 n'apparaît pas. BTW, mon installation SQL Compact 4.0 inclut System.Data.SqlServerCe.Entity.dll. Je devrais donc avoir les composants compacts SQL dont j'ai besoin.

je fais une erreur, ou est-ce un bug? Quelqu'un a une solution ou une solution? Merci pour votre aide.

27
demandé sur David Veeneman 2011-03-05 20:02:31

7 réponses

comme solution de contournement, j'utilise le Générer De L'Assistant De Base De Données pour générer un script SQL Compact 3.5, que j'exécute contre une base de données vierge SQL Compact 4.0 créée dans L'Explorateur de solutions VS 2010. Voici les étapes à suivre pour accomplir cette tâche:

Etape 1: exécutez le Générer De L'Assistant De Base De Données. Il invite à la création d'un fichier sur sa première page, donc lui faire créer un fichier Compact SQL 3.5. Ce fichier est un faux, donc il ne importe ce que vous nommez.

Etape 2: Terminer l'assistant pour créer le script DDL qui permettra de configurer la nouvelle base de données.

Etape 3: Supprimer le fichier fictif créé à l'Étape 1.

Etape 4: utilisez L'Explorateur de serveur VS 2010 pour créer le fichier SQL Compact 4.0 réel que vous utiliserez dans votre projet.

Étape 5:Générer De L'Assistant De Base De Données place deux références à SQL Compact " 3.5 "dans le fichier EDMX; ces références doivent être changées en"4.0". Ouvrez le fichier EDMX dans L'éditeur XML de VS 2010 (cliquez avec le bouton droit de la souris et sélectionnez "Ouvrir avec" pour accéder à L'éditeur XML). La ligne 7 devrait contenir les références" 3.5". Changez-les en "4.0" et sauvegardez le fichier.

Étape 6: ouvrez L'EDMX généré.Fichier de script SQLCE dans VS 2010. VS indiquera (via une bannière à travers le botton du volet de travail) que le script est déconnecté. Cliquez-droit sur l'espace blanc au-dessus de la bannière et sélectionnez Connexion > Connexion dans le menu contextuel qui s'affiche. Cela amène un dialogue de connexion--utilisez-le pour connecter le script à la base de données SQL Compact 4.0 que vous avez créé à L'Étape 4.

Étape 7: cliquez à nouveau sur le bouton droit de la souris dans l'espace réservé au script et sélectionnez Execute SQL dans le menu contextuel. Le script s'exécutera et vous obtiendrez le message de résultats habituel dans un volet sous le script. En supposant une exécution réussie, la base de données est alors configurée pour correspondre au modèle de données de L'entité.

Etape 8: nous devons également assurer L'application.config / web.config ne pointe pas vers le fichier dummy. S'il s'agit du fichier CE 4.0 réel créé à L'Étape 4 ci-dessus. Sinon, nous avons des problèmes avec la régénération du script lorsque nous modifions le modèle. Dans le fichier de configuration, changez aussi 3.5 En 4.0.

à ce moment, vous devriez être en mesure d'utiliser Entity Framework 4 pour travailler avec votre la base de données.

34
répondu David Veeneman 2011-06-25 06:25:13

Pour répondre aux commentaires ci-dessous et d'y répondre selon: http://blogs.msdn.com/b/sqlservercompact/archive/2011/01/12/microsoft-sql-server-compact-4-0-is-available-for-download.aspx

ces sorciers de ne pas travailler.

Designers dans les projets VB ou C# Windows dans Visual Studio 2010 SP1 Beta: les assistants suivants ne fonctionnent pas avec Compact 4.0 dans le système de projet Windows. Les développeurs peuvent ajouter manuellement une référence à ADO.NET fournisseur pour Compact 4.0 (System.Données.SqlServerCe) pour développer des programmes pour Compact 4.0 dans les projets Windows:

  1. L'Assistant de Configuration des sources de données qui est utilisé pour configurer les ensembles de données.
  2. l'assistant de Configuration des données Configure qui est utilisé pour configurer la synchronisation des données et du schéma avec SQL Server en utilisant Sync FX.
  3. l'assistant de modèle de données D'entités qui est utilisé pour générer des entités à partir d'une base de données compacte.

Voici les travaux acceptés solutions pour ces problèmes. http://erikej.blogspot.com/2010/11/using-entity-framework-with-sql-server.html

2
répondu Dimentox 2011-03-06 00:41:10

d'après ce que j'ai compris, la version actuelle de VS 2010 n'est pas compatible avec SQL CE 4.0. Il devrait être inclus dans VS 2010 SP1 (actuellement en Bêta). Vérifier ce billet de blog qui décrit également l'utilisation du modèle EF avec SQL CE 4.0 dans SP1.

Edit:

j'ai trouvé ce solution de contournement.

1
répondu Ladislav Mrnka 2011-03-06 09:55:11

Vous pouvez utiliser IDatabaseInitializer et créer la base de données en code en utilisant

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

1
répondu Roland 2011-12-19 18:51:36

encore une autre, utilisez L'outil de base de données WebMatrix.

Microsoft WebMatrix

0
répondu takepara 2011-03-05 23:20:26

je peux exécuter générer le magicien de base de données avec n'importe quel problème de mon Chinook.Data project, assurez-vous que vous avez une chaîne de connexion appropriée dans votre application.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=&quot;Data Source=C:\projects\Chinook\Chinook40.sdf&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>
0
répondu ErikEJ 2011-03-06 17:35:53

probablement besoin de la SQL Server Compact 4 tools installé aussi, s'il ne s'est pas installé directement lorsque Visual Studio 2010 SP1 a été installé, vous pouvez l'installer. C'est ce qui a fonctionné pour moi quand j'ai eu le problème.

0
répondu melutovich 2012-09-12 23:06:47