2016-01-22 31 views
8

Ho una nuova libreria di classi dnx di ASP.net 5 che sto utilizzando per il framework di entità. Devo scegliere l'EF 6 perché alcune funzioni di cui ho bisogno non sono in EF 7.EF 6 con un progetto dnx

Prima gli strumenti EF (come enable-migration) non c'erano. Ho aggiunto una libreria di classi vecchio stile e installato EF 6 e ora i comandi ci sono.

Quando eseguo consentire migrazioni ottengo questo errore:

PM> Enable-Migrations

Exception calling "SetData" with "2" argument(s): "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' is not marked as serializable." At D:\Projects\Rebus\FMS\Code\Current\FMSSupport\FMSSupport\packages\EntityFramework.6.1.3\tools\EntityFramework.psm1:720 char:5 + $domain.SetData('startUpProject', $startUpProject) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : SerializationException System.NullReferenceException: Object reference not set to an instance of an object. at System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetProjectTypes(Project project, Int32 shellVersion) at System.Data.Entity.Migrations.Extensions.ProjectExtensions.IsWebProject(Project project) at System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade(String configurationTypeName, Boolean useContextWorkingDirectory) at System.Data.Entity.Migrations.EnableMigrationsCommand.FindContextToEnable(String contextTypeName) at System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0() at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) Object reference not set to an instance of an object.

Ho provato diverse opzioni per consentire la migrazione, come specifica un progetto di avvio o il ContextTypeName.

Qualche idea?

+0

Ho ottenuto questo con un normale progetto ASP.NET ... – leppie

+1

Hehe, "start up" ha catturato la mia attenzione. Ho impostato il progetto web come progetto di avvio e poi ha funzionato: D – leppie

+0

Hai trovato una soluzione a questo? Volevo il supporto ComplexType che EFCore attualmente non supporta. ATM Sto cercando di srotolare manualmente i complessi per utilizzare EFCore :( – Ilan

risposta

0

È perché ASP.NET Core ha introdotto un nuovo tipo di progetto/sistema di configurazione (vedere package.config vs project.json) ei vecchi strumenti EF non sanno come utilizzare il sistema più recente (project.json). Probabilmente sarebbe più semplice creare un nuovo progetto e portarvi il codice se volete tornare a EF6.

interessante (beh, deludente in realtà) che stanno tornando indietro sulla project.json vedere: http://xoofx.com/blog/2016/05/11/goodbye-project-json/

3

A seguito di questa recommendation, progetti di dati EF6 dovrebbe utilizzare il .NET Framework tipo di libreria di classi csproj esistente.

Anche dopo aver seguito i consigli, ricevevo ancora lo stesso errore. Lo scarico dei propri progetti ASP.NET Core e quindi il richiamo del comando Enable-Migrations sul csproj appropriato dovrebbe consentire l'esecuzione del comando. Puoi scaricare un progetto facendo clic con il tasto destro del mouse sul progetto .NET Core e scegliendo l'opzione "Scarica progetto". Si noti inoltre che la finestra della Console di Gestione pacchetti ha una selezione a discesa "Progetto predefinito:". Dovresti scegliere il progetto con il tuo DbContext.

0

Ho avuto lo stesso problema. Basta impostare il progetto iniziale da ASP.NET Core al mio .NET Framework Lib per me =) Ora posso eseguire le migrazioni EF6 come al solito comando "Add-Migration" ...

P.S. Mi dispiace per il mio ing.