6

Ich habe ein Projekt Klassenbibliothek namens „Core“, die CoreContext mit Eigenschaften für gemeinsame Klassen definiert:Entity Framework mehrere Projekte mit Code ersten Migrationen

public class CoreContext : DbContext 
{ 
    public DbSet<User> Users { get; set; } 
    public DbSet<Role> Roles { get; set; } 
    public DbSet<UserContactInfo> UserContactInfos { get; set; } 
    ... more common properties ... 
} 

Dann habe ich mehrere Projekte Bezugnahme auf das „Core“ Projekt und definieren neues Contexts vererben CoreContext:

Project1:

public class Project1Context : CoreContext 
{ 
    public DbSet<Foo> Foos { get; set; } //object defined in Project1 
} 

Projekt2:

public class Project2Context : CoreContext 
{ 
    public DbSet<Bar> Bars { get; set; } //object defined in Project2 
} 

Wenn ich etwas in Project1Context ändern erstelle ich eine neue Migration in Projekt1, die in Ordnung ist, aber wenn ich etwas in das Projekt Kern ändern, sagen wir hinzufügen Eigenschaft Company-UserContactInfo werde ich Projekt1 und Project2 gehen und fügen Sie eine neue Migration hinzu und ich werde mit Migrationen zum Core-Projekt in Project1 und Project2 enden.

Meine Frage ist: Gibt es eine Möglichkeit, die Migrationen für CoreContext in den Core-Projekt und Project1Context und Project2Context-Migrationen zu ihrem entsprechenden Projekt und automatisch alle Migrationen im Zusammenhang mit dem Projekt, also wenn ich Project1 starten wird ausgeführt werden eigene Migrationen und CoreContext-Migrationen?

Als Klarstellung, ich habe separate Datenbanken für Projekt1 und Project2 und vor kurzem aktualisiert EF auf Version 6.

+0

Was versuchen Sie damit zu erreichen? Wenn Sie zwei separate Datenbanken haben, benötigen Sie die Änderungen im Basisdatenkontext in den Migrationen für Project1 und Project2. Es scheint mir, dass das, was Sie zu tun versuchen, mehr Aufwand verursachen wird als die Erstellung von Migrationen für beide Projekte. Selbst wenn Sie es können, müssen Sie die Basisänderungen immer noch auf beide Datenbanken anwenden. –

Antwort

0

Was Sie sagen, ist nicht möglich .. Man stelle sich vor, wenn Sie Modell verwenden grundlegende CRUD Ansichten zu erstellen und dann das Modell ändern. Ihre Frage ist ähnlich ..

0

Vielleicht könnten Sie Ihre eigene Unterklasse schreiben, die von erbt?

+0

Damit dies richtig funktioniert, müsste es mit automatischen Migrationen kombiniert werden, was für die Produktion nicht empfohlen wird. – lukew

Verwandte Themen