web-dev-qa-db-de.com

Wie fügt man dem vorhandenen Datenbankcode zuerst eine neue Tabelle hinzu?

Ursprünglich verwendete ich EF 6-Code, um eine neue Datenbank und zwei neue Tabellen zu erstellen. Der Code lautet:

 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();
    }
}

Jetzt ist meine Strategie geändert worden, ich möchte keine neue DB. Ich möchte die neuen Tabellen zu einer vorhandenen Datenbank hinzufügen, beispielsweise DevDB.

Wie kann ich den Code ändern? Muss ich Reverse Engineering Code First? verwenden? 

UPDATED: .__ Die Verbindungszeichenfolge lautet:

<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" />

20
user1108948

Wenn Sie automatische Migrationen eingerichtet haben, sollte dies recht einfach sein.

Wenn Sie dies nicht getan haben, müssen Sie Enable-Migrations –EnableAutomaticMigrations .__ ausführen. Vielleicht sollten Sie jedoch zuerst noch etwas lesen: http://msdn.Microsoft.com/de-de/data/jj554735.aspx

Für jeden, der eine Datenbank mit einer neuen Tabelle aktualisieren möchte (beispielsweise, ich möchte eine UserAttachment-Tabelle hinzufügen, die sich neben meine vorhandene User-Tabelle befindet), wird zunächst EF-Code verwendet:

Wenn die automatischen Migrationen aktiviert sind, sollten Sie sicherstellen, dass Sie ...

1.) Erstellen Sie Ihr neues Modell nach Ihren Wünschen.

2.) Erstellen Sie Ihre Konfigurationsdatei, etwa wie folgt:

 class UserAttachmentConfiguration : EntityTypeConfiguration<UserAttachment>
    {
        public UserAttachmentConfiguration()
            : base()
        {
            HasKey(p => p.UserId);
            ToTable("UserAttachment");    

            HasRequired(t => t.User)
                .WithOptional(t => t.UserAttachment);                
        }
    }

3.) Fügen Sie Ihre DbSet- und modelBuilder-Daten in Ihre Context.cs-Hauptdatei ein

DbSet

public DbSet<UserAttachment> UserAttachment {get; set;}

modelBuilder

modelBuilder.Configurations.Add(new UserAttachmentConfiguration());

4.) Führen Sie update-database über Package Manager Console von Visual Studio aus. Stellen Sie sicher, dass Sie das richtige Projekt aus der Dropdown-Liste ausgewählt haben. Dies ist wahrscheinlich ein .Repository-benanntes Projekt.

Ihre neue Tabelle sollte jetzt vorhanden in Ihrer Datenbank vorhanden sein.

21
JsonStatham

Erstellen Sie einfach Ihre neue Tabelle als Modell und fügen Sie ihren Eintrag in der DbContext-Klasse hinzu 

so etwas wie 

 public class TestingContext : DbContext, IDisposable
{
    public DbSet<CallDataRecord> CallDataRecords { get; set; }
    public DbSet<Attempt> Attempts { get; set; }

    public DbSet<MyNewModel> MyNewModels { get; set; }

Dann add-migrations und update-database

23
Anshul Nigam
  1. Aktivieren Sie Migrationen zuerst über die Paket-Manager-Konsole.

  2. Erstellen Sie Konfigurationen wie

    namespace Demo.Data.Configurations
    {
        public class DemoConnectionConfiguration : EntityTypeConfiguration<DemoConnection>
        {
            public DemoConnectionConfiguration()
            {
                ToTable("DemoConnection");
                HasKey(a => a.Id);
            }
        }
    }
    
  3. Fügen Sie Dbset und Model Builder in Context.cs hinzu 

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new DemoConnectionConfiguration());
    
        base.OnModelCreating(modelBuilder);
    }
    
    
    public DbSet<DemoConnection> DemoConnection { get; set; }
    
  4. "Update-Datenbank" aus der Package Manager Console.

Hinweis: "Bitte wählen Sie den richtigen Ordner aus der Dropdown-Liste" Default Project "aus."

Glückwunsch! Ihre DemoConnection-Tabelle befindet sich jetzt in der Datenbank.

0
Chetan Pandey

Haben Sie Migrationen eingerichtet? Wenn ja, dann migrieren Sie einfach die Datenbank (add-migration blah; update-database) und fügt nur die neue Tabelle hinzu.

Wenn Sie keine Migrationen aktiviert haben, sollten Sie dennoch mit dem obigen Code einverstanden sein. Es sollte nur die Tabelle hinzufügen, wenn es migriert wird.

Ich schreibe dies von meinem Telefon oder würde einen Codetest durchführen.

0
MarkWalls