J'essaie d'utiliser le noyau .net pour procéder au reverse engineering de classes de modèles à partir d'une base de données existante sur mon MAC. La base de données s'exécute sur une machine virtuelle avec Windows et je peux y connecter à partir d'osx.
Dans mon projet.json, j'ai les éléments suivants:
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.1",
"type": "platform"
},
"Microsoft.AspNetCore.AngularServices": "1.0.0-*",
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.1",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Configuration.CommandLine": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Microsoft.EntityFrameworkCore.Design": {
"type": "build",
"version": "1.0.0-preview2-final"
},
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.0-rc2-final",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0-rc2-final"
},
"tools": {
"Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
"Microsoft.DotNet.Watcher.Tools": "1.0.0-preview2-final",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true,
"compile": {
"exclude": ["node_modules"]
}
}
Mais quand je cours
dotnet ef dbcontext scaffold "myDbConnectString" Microsoft.EntityFrameworkCore.SqlServer
J'obtiens l'erreur suivante et je ne peux pas me passer de ça
An error occurred while calling method 'ConfigureDesignTimeServices' on startup class
"Microsoft.EntityFrameworkCore.Scaffolding.SqlServerDesignTimeServices". Envisagez d'utiliser IDbContextFactory pour remplacer l'initialisation de DbContext au moment de la conception. Erreur: Impossible de charger le type 'Microsoft.Extensions.DependencyInjection.ServiceCollectionExtensions' de l'assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = adb9793829ddae60'. System.AggregateException: une ou plusieurs erreurs se sont produites. (Impossible de résoudre le service pour le type 'Microsoft.EntityFrameworkCore.Scaffolding.IScaffoldingModelFactory' lors de l'activation de 'Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineeringGenerator'.) ---> System.InvalidOperationException: exception possible au service de type 'Microsoft. EntityFrameworkCore.Scaffolding.IScaffoldingModelFactory 'en essayant d'activer' Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineeringGenerator '. les
1 callSiteChain, ParameterInfo[] parameters, Boolean throwIfCallSiteNotFound) at Microsoft.Extensions.DependencyInjection.ServiceLookup.Service.CreateCallSite(ServiceProvider provider, ISet
.ServiceCalSite (Type serviceType, ISA 1ServiceProvider.GetResCallSite (IS service, ISet1 callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetServiceCallSite(Type serviceType, ISet
) à System.Collections.Concurrent.ConcurrentDictionaryExtensions.GetOrAdd [TKey, TValue, TArg] (2 dictionary, TKey key, Func
ConcurrentDictionary2 dictionary, TKey key, Func
3 valueFactory, TArg arg) à Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService (Type serviceType) à Microsoft. Extensions.DependencyInjection.Service FournisseurServiceProviderServiceProviderServiceExtensions.ServiceProviderServiceExtensions.ServiceProviderServiceExtensions. IEnumerable1 schemas, IEnumerable
1 tables, useDataAnnotations booléens, overwriteFiles booléennes, CancellationToken cancellationToken) à Microsoft.EntityFrameworkCore.Design.Internal.OperationExecutor.ReverseEngineerAsync (fournisseur de String, String connectionString, String outputDir, String dbContextClassName, IEnumerable1 schemaFilters, IEnumerable
1 tableFilters, Utilisation booléenneDataAnnotations, fichiers écrasés booléens, AnnulationToken annulationToken) à Microsoft.EntityFrameworkCore.Tools.Cli.DbContextScaffoldCommand.d__1.MoveNext () --- Fin de la trace de pile d'exception interne --- à System.Threading.Tasks.Task.Thro. wIfExceptional (Boolean includeTaskCanceledExceptions) à System.Threading.Tasks.Task1.GetResultCore(Boolean waitCompletionNotification) at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args) at Microsoft.EntityFrameworkCore.Tools.Cli.Program.Main(String[] args) ---> (Inner Exception #0) System.InvalidOperationException: Unable to resolve service for type 'Microsoft.EntityFrameworkCore.Scaffolding.IScaffoldingModelFactory' while attempting to activate 'Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineeringGenerator'. at Microsoft.Extensions.DependencyInjection.ServiceLookup.Service.PopulateCallSites(ServiceProvider provider, ISet
1 callSiteChain, ParameterInfo [] Paramètres, Boolean throwIfCallSiteNotFound) à Microsoft.Extensions.DependencyInjection.ServiceLookup.Service.CreateCallSite (fournisseur de ServiceProvider, IPlacez1 callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetResolveCallSite(IService service, ISet
1 callSiteChain) à Microsoft.Extensions.DependencyInjection.ServiceProvider.GetServiceCallSite (type serviceType, IPlacez1 callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Type serviceType, ServiceProvider serviceProvider) at System.Collections.Concurrent.ConcurrentDictionaryExtensions.GetOrAdd[TKey,TValue,TArg](ConcurrentDictionary
dictionnaire1 callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Type serviceType, ServiceProvider serviceProvider) at System.Collections.Concurrent.ConcurrentDictionaryExtensions.GetOrAdd[TKey,TValue,TArg](ConcurrentDictionary
2, clé TKey, Func3 valueFactory, TArg arg) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) at Microsoft.EntityFrameworkCore.Design.DatabaseOperations.ReverseEngineerAsync(String provider, String connectionString, String outputDir, String dbContextClassName, IEnumerable
1 schemas, IEnumerable1 tables, Boolean useDataAnnotations, Boolean overwriteFiles, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Design.Internal.OperationExecutor.ReverseEngineerAsync(String provider, String connectionString, String outputDir, String dbContextClassName, IEnumerable
ligne , Boolean useDataAnnotations, Boolean overwriteFiles, CancellationToken cancelToken) à Microsoft.EntityFrameworkCore.Tools.Cli.DbContextScaffoldCommand.d__1.MoveNext () <--- Une ou plusieurs erreurs se sont produites. (Impossible de résoudre le service pour le type 'Microsoft.EntityFrameworkCore.Scaffolding.IScaffoldingModelFactory' lors de l'activation de 'Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineeringGenerator'.)
J'ai essayé de changer les versions de mes dépendances dans les deux sens mais sans résultat. Quelqu'un at-il des indications?
Je viens de le faire fonctionner. J'ai mis à jour vers .net core 1.1.0 et modifié mon project.json pour utiliser des versions plus récentes. J'espère que cela peut aider quelqu'un d'autre
project.json:
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.1.0",
"type": "platform"
},
"Microsoft.AspNetCore.AngularServices": "1.0.0-*",
"Microsoft.AspNetCore.Diagnostics": "1.1.0",
"Microsoft.AspNetCore.Mvc": "1.1.0",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.1.0-preview4-final",
"type": "build"
},
"Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
"Microsoft.AspNetCore.StaticFiles": "1.1.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
"Microsoft.Extensions.Configuration.Json": "1.1.0",
"Microsoft.Extensions.Configuration.CommandLine": "1.1.0",
"Microsoft.Extensions.Logging": "1.1.0",
"Microsoft.Extensions.Logging.Console": "1.1.0",
"Microsoft.Extensions.Logging.Debug": "1.1.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0",
"Microsoft.EntityFrameworkCore.Design": {
"type": "build",
"version": "1.1.0"
},
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
"Microsoft.EntityFrameworkCore.SqlServer": "1.1.0"
},
"tools": {
"Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
"Microsoft.DotNet.Watcher.Tools": "1.1.0-preview4-final",
"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
}
Avez-vous essayé d'utiliser une version RTM d'Entity Framework?
{
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.1"
}