Problèmes de première migration du code SQL Server CE

J’ai beaucoup de problèmes à essayer d’activer les migrations (code avant) pour ma firebase database SQL Server Compact 4.0 pour mon application .NET de bureau.

Enable-Migrations fonctionne et le répertoire Migrations est créé. Après cela, lorsque j’essaie d’exécuter Add-Migration InitialMigration , je reçois:

L’access au fichier de firebase database n’est pas autorisé. [1914, Nom du fichier = Logo.sdf, SeCreateFile]

C’est le premier problème, mais je l’ai résolu en exécutant Visual Studio en tant qu’administrateur … n’aime pas cette solution et ne sait pas non plus si, ultérieurement, il fonctionnera sans que l’application soit exécutée en mode administrateur. Je laisse ce problème de côté pour l’instant …

Ma chaîne de connexion:

 ` 

Donc, après avoir exécuté Add-Migration InitialMigration en mode Administrateur, je reçois une migration vide … ça va. Ensuite, je supprime la migration et ajoute une nouvelle classe:

 using System; using System.Collections.Generic; public class Blog { public int ID { get; set; } public ssortingng Title { get; set; } } 

J’ajoute une référence à la classe de contexte:

 public class LogoContext : DbContext { public DbSet Words { get; set; } public DbSet Users { get; set; } public DbSet Blogs { get; set; } } 

Ensuite, exécutez Add-Migration InitialMigration nouveau et obtenez:

 public partial class InitialMigration : DbMigration { public override void Up() { CreateTable( "dbo.Blogs", c => new { ID = c.Int(nullable: false, identity: true), Content = c.Ssortingng(maxLength: 4000), }) .PrimaryKey(t => t.ID); } public override void Down() { DropTable("dbo.Blogs"); } } 

Après avoir exécuté Update-Database je vois:

 Applying code-based migrations: [201304211225255_InitialMigration]. Applying code-based migration: 201304211225255_InitialMigration. Running Seed method. 

Maintenant, le problème apparaît – dans mon Explorateur de serveurs, j’examine la firebase database Logo.sdf et n’inclut pas la table Blogs ! J’essaye même d’exécuter ce code depuis mon application:

 var db = new LogoContext(); db.Posts.Add(new Blog { Title= "moo" }); db.SaveChanges(); 

pour vérifier si peut-être mon explorateur de serveur ne montre pas la table .. mais j’obtiens une exception:

La table spécifiée n’existe pas. [Blogs]

Donc, les migrations ne sont évidemment pas appliquées à mon fichier Logo.sdf 🙁

Si je supprime la chaîne de connexion de app.config , la connexion à une instance locale de SQL Server Express est supposée. Et là ça fonctionne parfaitement !! Lorsque j’examine la firebase database avec SQL Server Management Studio, je vois la nouvelle table Blogs ainsi qu’une table système pour les métadonnées sur les migrations …

Une autre petite information:

Lorsque j’essaie d’exécuter Update-Database nouveau, le message “Aucune migration basée sur du code en attente” s’affiche. et cela me dit que certaines données sont en train d’être sauvegardées dans Logo.sdf … au moins quelques métadonnées sur les migrations, mais je ne vois toujours pas ce tableau dans l’Explorateur de serveurs.

J’utilise VS 2012 et EF 5.0.

S’il vous plaît, aidez-moi à comprendre ceci … Il me semble que quelque chose ne va vraiment pas, car cela fonctionne uniquement avec l’instance SQL Server Express, mais pas avec SQL Server CE 4.0. : ((

Je vous remercie! david

Le problème était donc que la solution créait un fichier .sdf séparé ici:

“C: \ Fichiers de programme (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ Logo.sdf”

Ce qui était inattendu et étrange à mon humble avis …

J’ai fini par utiliser cette chaîne de connexion:

  

Cela fait référence à bin / Debug / Logo.sdf et fonctionne pendant le développement et l’exécution séparée d’un fichier .exe.

La seule chose avec cette méthode est que mon fichier de projet Logo.sdf (qui était copié dans Debug “si plus récent”) est maintenant complètement ignoré. Toutes les migrations seront exécutées sur le fichier Debug. C’est probablement bien aussi …

Merci Erik pour l’allusion! david