EF 6 mit einem dnx-Projekt

9

Ich habe eine neue ASP.net 5 dnx-Klassenbibliothek, die ich für das Entity-Framework verwende. Ich muss auf EF 6 zielen, da einige Funktionen, die ich brauche, nicht in EF 7 sind.

Zuerst waren die EF Tools (wie enable-migration) nicht da. Ich habe eine alte Klassenbibliothek hinzugefügt und EF 6 installiert und jetzt sind die Befehle da.

Wenn ich Migrationen aktiviere, erhalte ich folgende Fehlermeldung:

  

PM & gt; Aktivieren Sie Migrationen

     

Ausnahme beim Aufruf von "SetData" mit "2" Argument (en): "Type   'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject'   in Assembly 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation,   Version = 14.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a 'ist   nicht als serialisierbar gekennzeichnet. "At   D: \ Projekte \ Rebus \ FMS \ Code \ Aktuelle \ FMSSupport \ FMSSupport \ packages \ EntityFramework.6.1.3 \ tools \ EntityFramework.psm1: 720   Zeichen: 5   + $ domain.SetData ('startUpProject', $ startUpProject)   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~       + CategoryInfo: NotSpecified: (:) [], MethodInvocationException       + FullyQualifiedErrorId: SerializationException System.NullReferenceException: Objektreferenz wurde nicht auf eine Instanz festgelegt   eines Objekts. beim   System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetProjectTypes (Projekt   Projekt, Int32 ShellVersion) um   System.Data.Entity.Migrations.Extensions.ProjectExtensions.IsWebProject (Projekt   Projekt) bei   System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade (String   configurationTypeName, Boolean useContextWorkingDirectory) um   System.Data.Entity.Migrations.EnableMigrationsCommand.FindContextToEnable (String   contextTypeName) bei   System.Data.Entity.Migrations.EnableMigrationsCommand. & Lt; & gt; c__DisplayClass2. & Lt; .ctor & gt; b__0 ()   beim   System.Data.Entity.Migrations.MigrationsDomainCommand.Execute (Aktion   Befehl) Objektverweis nicht auf eine Instanz eines Objekts gesetzt.

Ich habe verschiedene Optionen für die Aktivierung der Migration ausprobiert, z. B. die Angabe eines Startprojekts oder des contextTypeName.

Irgendwelche Ideen?

    
Don Chambers 22.01.2016, 21:16
quelle

3 Antworten

3

Im Anschluss an diese Empfehlung sollten EF6-Datenprojekte die vorhandenen verwenden .NET Framework-Klassenbibliothek csproj type.

Auch nachdem ich den Empfehlungen gefolgt war, bekam ich immer noch den gleichen Fehler. Entladen Sie Ihre ASP.NET Core-Projekte und rufen Sie dann den Befehl Enable-Migrations auf dem entsprechenden csproj auf, damit der Befehl ausgeführt werden kann. Sie können ein Projekt entladen, indem Sie mit der rechten Maustaste auf das .NET Core-Projekt klicken und die Option "Projekt entladen" auswählen. Es sollte auch beachtet werden, dass das Fenster der Package Manager-Konsole über die Dropdown-Liste "Standardprojekt:" verfügt. Sie sollten das Projekt mit Ihrem DbContext auswählen.

    
deloreyk 11.10.2016 21:31
quelle
0

Dies liegt daran, dass ASP.NET Core ein neues Projekttyp- / Konfigurationssystem eingeführt hat (siehe package.config vs project.json ) und die alten EF-Tools wissen nicht, wie man mit dem neueren System (project.json) arbeitet. Es wäre wahrscheinlich am einfachsten, ein neues Projekt zu erstellen und Ihren Code dorthin zu portieren, wenn Sie zu EF6 zurückkehren möchten.

Interessanterweise (naja, enttäuschenderweise tatsächlich) sind sie Backtracking auf project.json siehe: Ссылка

    
Ilan 10.07.2016 19:12
quelle
0

Ich hatte das gleiche Problem. Einfach das Start-Projekt von ASP.NET Core auf meine .NET Framework Lib zu setzen macht den Trick für mich =) Jetzt kann ich wie gewohnt EF6-Migrationen machen "Add-Migration" -Befehl ...

P.S. Entschuldigung für meine eng.

    
Vladislav 29.03.2017 13:58
quelle