Code d’abord créer des tables

Je suivais ce didacticiel et j’ai essayé d’append quelques nouvelles colonnes dans la table userprofile. Et j’ai essayé de créer une nouvelle table.

public class UsersContext : DbContext { public UsersContext() : base("DefaultConnection") { } public DbSet UserProfiles { get; set; } public DbSet TestTabel { get; set; } } [Table("UserProfile")] public class UserProfile { [Key] [DatabaseGeneratedAtsortingbute(DatabaseGeneratedOption.Identity)] public int UserId { get; set; } public ssortingng UserName { get; set; } public ssortingng Mobile { get; set; } public ssortingng FirstName { get; set; } public ssortingng LastName { get; set; } } [Table("TestTabel")] public class TestTabel { [Key] [DatabaseGeneratedAtsortingbute(DatabaseGeneratedOption.Identity)] public int TestId { get; set; } public ssortingng TestName { get; set; } public ssortingng TestMobile { get; set; } } 

Alors j’ai essayé de mettre à jour la firebase database avec la console avec la commande update-database, et j’ai eu cette erreur msg:

Il existe déjà un object nommé ‘UserProfile’ dans la firebase database.

Les nouvelles colonnes n’ont pas été ajoutées, ni la table.

Qu’est-ce que je rate?

[EDIT] J’ai fait les commandes add-migration et update-database, et voici le résultat (il fallait faire la commande update-database deux fois, la deuxième fois avec commenter).

 PM> Add-Migration cmdlet Add-Migration at command pipeline position 1 Supply values for the following parameters: Name: test Scaffolding migration 'test'. The Designer Code for this migration file includes a snapshot of your current Code First model. This snapshot is used to calculate the changes to your model when you scaffold the next migration. If you make additional changes to your model that you want to include in this migration, then you can re-scaffold it by running 'Add-Migration 201304011714212_test' again. PM> Update-Database The project 'MVC4SimpleMembershipCodeFirstSeedingEF5' failed to build. PM> Update-Database Specify the '-Verbose' flag to view the SQL statements being applied to the target database. Applying code-based migrations: [201304011714212_test]. Applying code-based migration: 201304011714212_test. Running Seed method. PM> Update-Database -verbose Using StartUp project 'MVC4SimpleMembershipCodeFirstSeedingEF5'. Using NuGet project 'MVC4SimpleMembershipCodeFirstSeedingEF5'. Specify the '-Verbose' flag to view the SQL statements being applied to the target database. Target database is: 'aspnet-MVC4SimpleMembershipCodeFirstSeedingEF5' (DataSource: ., Provider: System.Data.SqlClient, Origin: Configuration). No pending code-based migrations. Running Seed method. PM> 

[/MODIFIER]

Configuration.cs:

  namespace MVC4SimpleMembershipCodeFirstSeedingEF5.Migrations { internal sealed class Configuration : DbMigrationsConfiguration { public Configuration() { AutomaticMigrationsEnabled = true; } protected override void Seed(UsersContext context) { WebSecurity.InitializeDatabaseConnection( "DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true); if (!Roles.RoleExists("Administrator")) Roles.CreateRole("Administrator"); if (!WebSecurity.UserExists("test")) WebSecurity.CreateUserAndAccount( "test", "password", new { Mobile = "+19725000374", FirstName = "test", LastName = "test" }); if (!Roles.GetRolesForUser("test").Contains("Administrator")) Roles.AddUsersToRoles(new[] { "test" }, new[] { "Administrator" }); } } } 

Dans le dossier Filtres 1 fichier cs:

 namespace MVC4SimpleMembershipCodeFirstSeedingEF5.Filters { [AtsortingbuteUsage(AtsortingbuteTargets.Class | AtsortingbuteTargets.Method, AllowMultiple = false, Inherited = true)] public sealed class InitializeSimpleMembershipAtsortingbute : ActionFilterAtsortingbute { private static SimpleMembershipInitializer _initializer; private static object _initializerLock = new object(); private static bool _isInitialized; public override void OnActionExecuting(ActionExecutingContext filterContext) { // Ensure ASP.NET Simple Membership is initialized only once per app start LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock); } private class SimpleMembershipInitializer { public SimpleMembershipInitializer() { Database.SetInitializer(null); try { using (var context = new UsersContext()) { if (!context.Database.Exists()) { // Create the SimpleMembership database without Entity Framework migration schema ((IObjectContextAdapter)context).ObjectContext.CreateDatabase(); } } WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true); } catch (Exception ex) { throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex); } } } } } 

Chaîne de connexion:

  

Dernière migration:

 namespace MVC4SimpleMembershipCodeFirstSeedingEF5.Migrations { using System; using System.Data.Entity.Migrations; public partial class test : DbMigration { public override void Up() { CreateTable( "dbo.TestTabel", c => new { TestId = c.Int(nullable: false, identity: true), TestName = c.Ssortingng(), TestMobile = c.Ssortingng(), }) .PrimaryKey(t => t.TestId); } public override void Down() { DropTable("dbo.TestTabel"); } } } 

Je vais simplement lancer tout ce qui suit ici pour vous guider dans le démarrage de votre code et de vos migrations, en s’attaquant à divers problèmes qui pourraient ou non se produire. Remarque: le code d’abord s’est révélé très fiable – et peut également être élaboré avec des scénarios en temps réel – vous devez simplement savoir ce que vous faites.

Très probablement, votre migration et la firebase database sont fondamentalement désynchronisées.

Votre migration existante tente de s’exécuter sur l’ancienne copie de la firebase database – avec des montées / descentes optimisées pour la «firebase database vide», je suppose.

Vous devez exécuter vos migrations (Add-Migration) sur la copie de la firebase database à laquelle vous vous attachez – cela créera une “différence” et actualisera simplement votre firebase database ( assurez-vous toujours de sauvegarder , comme il pourrait tomber / changer etc.).

Ou si possible, videz votre Db – et recommencez à zéro.

Ou si Live Db – créez des migrations – et exécutez Update-Database -Script sur votre dev-machine – pour générer la totalité de la firebase database – ou les modifications (tout cela est très grossier, vous devez vous adapter à votre cas). Et appliquez-vous ensuite à votre “firebase database” en exécutant des scripts.

Vous pouvez également consulter mon post précédent sur la synchronisation …

MVC3 et Code First Migrations – “le modèle sauvegardant le contexte ‘blah’ a changé depuis la création de la firebase database”

MODIFIER:
Cochez également cette réponse AutomaticMigrationsEnabled false ou true?

Et si cela ne vous dérange pas, ajoutez AutomaticMigrationsEnabled = true; à vous Configuration (également sous le dossier Migrations – créé pour vous) ..

Quelques pas que je fais toujours pour nettoyer les migrations:

(bon de sauvegarder en premier)
– Enable-Migrations -force (pour la première fois seulement – ceci supprime les fichiers configuration.cs et tous les fichiers d’origine!)
– AutomaticMigrationsEnabled = true;
– supprimer manuellement les migrations existantes du projet (\ Migrations)
– reconstruire le projet à ce stade
– Add-Migration Initial
– Update-Database -Force -Verbose

… plus tard (migrations suivantes):
– Add-Migration SomeOther1
– Update-Database -Force -Verbose
… à condition que vous gardiez votre firebase database synchronisée – c.-à-d. soyez prudent lorsque vous déplacez la firebase database, ajustez-la manuellement, etc. (et dans ce cas, reportez-vous à l’autre message)

Quelques autres choses:

Avec la console PM …
– sélectionnez votre projet dans la liste,
– assurez-vous que votre “exe principal” (appelant votre projet / assemblage de données – ou ce même projet si console / application) – est défini en tant que projet “de démarrage”,
– Regardez toujours les commentaires de la console – car il se peut qu’il essaie de construire et d’accéder à un projet différent.

Lien:

Voir ce message de la mine La migration ne modifie pas mon tableau
En bref – votre connexion est nommée comme votre contexte + votre projet – sauf indication contraire. Il tire de votre constructeur DbConfig – ou app.config (connexions). Assurez-vous que vous regardez la “bonne firebase database” (c’est-à-dire ce que vous regardez à travers un explorateur et à quoi le code-premier est connecté – peut être deux choses différentes).

Bâtiment:
Assurez-vous que votre projet est défini dans la «configuration» pour une construction automatique – cela peut également être un problème.