Ho creato un progetto asp.net core RC2 (.NET 4.61 framework).
Poi ho creato un'altra libreria di classi nuget "DataProvider" (.NET core) con riferimenti a Entity Framework e modificato il framework
nelle impostazioni project.json
su "net461":{}
.
Il motivo per cui non ho creato una libreria di classi c # comune perché non ha project.json ma ho bisogno di impostare cose come:
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.Tools": {
"type": "build",
"version": "1.0.0-preview1-final"
}
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": {
"imports": [ "portable-net451+win8" ],
"version": "1.0.0-preview1-final"
}
},
"frameworks": {
"net461": {
"buildOptions": {
"emitEntryPoint": true
}
}
}
}
Il progetto DataProvider ha la mia classe DbContext.
Così vado alla riga di comando nella directory DataProvider ed eseguo:
dotnet ef migrations add Init
Allora ottengo questo errore:
This preview of Entity Framework tools does not support targeting class library projects in ASP.NET Core and .NET Core applications. See http://go.microsoft.com/fwlink/?LinkId=798221 for details and workarounds.
NON voglio inserire il mio DbContext nel progetto asp.net core rc2 !!!
Ho fatto clic su questo link per trovare ulteriori informazioni su questa soluzione alternativa, ma in realtà non vi è nulla di utile finché non ho trovato il collegamento:
https://github.com/aspnet/EntityFramework.Docs/blob/master/docs/cli/dotnet.rst
Qui ci sono 2 soluzioni introdotte a causa di questo errore che ho avuto prima:
soluzione 1 non ha funzionato ( "Per rendere il progetto un'applicazione .NET Core, aggiungi il framework" netcoreapp1.0 "a project.json insieme alle altre impostazioni nell'esempio seguente:" )
Questo è il modo in cui ho cambiato il project.json
{
"frameworks": {
"netcoreapp1.0": {
"imports": [ "portable-net451+win8" ],
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-*"
},
"Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.Tools": {
"type": "build",
"version": "1.0.0-preview1-final"
}
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": {
"imports": [ "portable-net451+win8" ],
"version": "1.0.0-preview1-final"
}
}
}
}
}
=> Perché dopo aver installato molti nuget e ricostruito, devo anche aggiungere un program.cs che ho aggiunto, ecc. Quindi eseguo di nuovo "dotnet ef migrations add Init" sul CMD ottenendo questo errore: No executable found matching command "dotnet-ef"
soluzione 2 non ha funzionato: ( "Per creare un'app desktop .NET, assicurati che le destinazioni del progetto" net451 "o più recenti (anche l'esempio" net461 "funzioni) e assicurati che l'opzione di compilazione" emitEntryPoint "sia impostata su true." )
=> Perché ottengo un'eccezione di compilazione, che program.cs non ha un metodo Main.
Ok, ho una libreria di classi che non ha mai un program.cs ... Poi ho aggiunto il program.cs con il metodo Main statico. Ora il progetto viene compilato, ma quando eseguo nuovamente "dotnet ef migrations add Init" sul CMD ottengo lo stesso errore di prima !!!
Cosa devo fare per far funzionare l'esecuzione di "dotnet ef migrations add Init"?