Comment faire pour ajouter une nouvelle table de base de données existante premier code
À l'origine, j'ai utilisé EF 6 le premier code pour créer une nouvelle base de données et de deux nouveaux tableaux. Le code est:
public class TestingContext : DbContext, IDisposable
{
public DbSet<CallDataRecord> CallDataRecords { get; set; }
public DbSet<Attempt> Attempts { get; set; }
public TestingContext()
: base("Testing")
{
Database.SetInitializer<TestingContext>(new MigrateDatabaseToLatestVersion<TestingContext, GenericIVR.Migrations.Configuration>());
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Attempt>().HasRequired(t => t.CallDataRecord).WithMany(a => a.Attempts).HasForeignKey(t => t.FKTaskId);
modelBuilder.Entity<Attempt>().Property(x => x.AttemptId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).IsRequired();
modelBuilder.Entity<CallDataRecord>().Property(x => x.TaskId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).IsRequired();
}
}
Maintenant, ma stratégie est changé, je ne veux pas d'une nouvelle bd. Je tiens à ajouter de nouvelles tables d'une base de données existante, dire DevDB
.
Comment changer le code? DOIS-je utiliser Reverse Engineering Code First?
Mise à JOUR:
La chaîne de connexion est:
<connectionStrings>
<add name="Testing" connectionString="Data Source=dddd.corporate.xxxx.com; Initial Catalog=Testing; User ID=sa; Password=password; MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
Vous devez vous connecter pour publier un commentaire.
Si vous avez des migrations automatiques mis en place ce devrait être assez simple.
Si vous ne l'avez pas, vous devrez exécuter
Enable-Migrations –EnableAutomaticMigrations
Peut-être faire plus de lecture ici, mais d'abord: http://msdn.microsoft.com/en-gb/data/jj554735.aspx
Pour ceux qui cherchent à mettre à jour une base de données avec une table (dire que je veux ajouter un UserAttachment table pour s'asseoir à côté de mon tableau d'Utilisateur) à l'aide de EF premier code, procédez de la manière suivante:
Avec les migrations automatiques est activé, vous devez vous assurer d'avoir...
1.) Créez votre nouveau modèle que vous voyez l'ajustement.
2.) Créer votre fichier de Configuration, quelque chose le long des lignes de:
3.) Ajouter votre
DbSet
etmodelBuilder
données de votre mainContext.cs
fichierDbSet
modelBuilder
4.) Exécuter
update-database
via Visual StudioPackage Manager Console
, assurez-vous d'avoir sélectionné le bon projet à partir de la liste déroulante, cela est susceptible d'être un.Repository
nommé projet.Votre nouvelle table doit existent maintenant dans votre base de données.
Il suffit de créer votre table en tant que modèle et ajouter son entrée dans la classe DbContext
quelque chose comme
Puis
add-migrations
etupdate-database
{get; set;}
public DbSet<MyNewModel> MyNewModels { get; set; }
? Parce que j'ai essayé mais ça ne fonctionne pas. Il a donné de l'erreur: Le projet " n'a pas de construire. Avez-vous pourquoi cela m'arrive?Avez-vous des migrations mettre en place? Si oui, alors seulement migrer la base de données (add-migration bla; mise à jour de la base de données) et il ne fera qu'ajouter de la nouvelle table.
Si vous n'avez pas migrations activé, alors vous devriez toujours être ok avec le code ci-dessus. Il faut juste ajouter de la table quand il migre.
Je suis en train de taper ceci à partir de mon téléphone ou je voudrais donner un code de test.
Initial Catalog=Testing', now I want to add the tables to the existing DB
DevDB`. Je pense que je dois modifier la chaîne de connexion, peut-être un code.Enable-les Migrations à partir de la console du gestionnaire de package en premier.
Créer des Configurations de Classe comme
Ajouter Dbset et créateur de modèles dans le Contexte.cs comme
"Mise à jour de la Base de données" à partir de la Console du Gestionnaire de Package.
Remarque : "s'il vous Plaît sélectionner le dossier de Projet par Défaut de la liste Déroulante"
Félicitation! Votre DemoConnection Table dans la Base de données maintenant.