Ho creato un nuovo progetto .NET Core con comando dotnet new -t lib
. È una libreria di classi per il mio contesto EF. Questo è il mio project.json
:
{
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable"
},
"dependencies": {},
"frameworks": {
"netstandard1.6": {
"dependencies": {
"NETStandard.Library": "1.6.0",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
}
}
}
}
Quando dotnet restore
comando dotnet restore
questo errore:
error: Package Microsoft.EntityFrameworkCore.Tools 1.0.0-preview2-final is not compatible with netstandard1.6 (.NETStandard,Version=v1.6). Package Microsoft.EntityFrameworkCore.Tools 1.0.0-preview2-final supports:
Come posso usare EF Code First con netstandard1.6?
In base a ciò , "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
deve essere registrato in una sezione strumenti in project.json:
{
"version": "1.0.0-*",
"description": "Class Library",
"frameworks": {
"netstandard1.6": {
"imports": [
"dnxcore50"
]
}
},
"dependencies": {
"NETStandard.Library": "1.6.0",
"Microsoft.EntityFrameworkCore": "1.0.0",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0"
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
}
}
Inoltre è una buona idea usare le importazioni , perché alcune delle dipendenze di EF Core ancora non supportano .NET Standard, ma nel tuo caso ho controllato e funziona anche senza importazioni.
Per quanto riguarda il commento di Johan B, che afferma che gli strumenti ef non possono essere utilizzati con le librerie di classi per ora, viene in parte risolto usando la soluzione alternativa al --startup-project
, ad esempio: dotnet ef --startup-project ../ProjectThatCanRunCommand/ migrations add InitDb
, maggiori informazioni: Parametrizza le directory usate da dotnet-ef.