Я пытаюсь использовать ядро .net для обратного проектирования классов моделей из существующей базы данных на моем MAC. База данных работает в VM с окнами, и я могу подключиться к ней из osx.
В моем проекте.json у меня есть следующее:
"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"]
}
}
Но когда я бегу
dotnet ef dbcontext scaffold "myDbConnectString" Microsoft.EntityFrameworkCore.SqlServer
Я получаю следующую ошибку, и я не могу получить это
An error occurred while calling method 'ConfigureDesignTimeServices' on startup class
'Microsoft.EntityFrameworkCore.Scaffolding.SqlServerDesignTimeServices'. Рассмотрите возможность использования IDbContextFactory для переопределения инициализации DbContext во время разработки. Ошибка: Не удалось загрузить тип «Microsoft.Extensions.DependencyInjection.ServiceCollectionExtensions» из сборки «Microsoft.Extensions.DependencyInjection.Abstractions, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = adb9793829ddae60». System.AggregateException: произошла одна или несколько ошибок. (Невозможно разрешить службу для типа «Microsoft.EntityFrameworkCore.Scaffolding.IScaffoldingModelFactory» при попытке активировать «Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineeringGenerator».) ---> System.InvalidOperationException: не удается разрешить службу для типа «Microsoft». EntityFrameworkCore.Scaffolding.IScaffoldingModelFactory при попытке активировать «Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineeringGenerator». в Microsoft.Extensions.DependencyInjection.ServiceLookup.Service.PopulateCallSites (поставщик ServiceProvider, ISet
1 callSiteChain, ParameterInfo[] parameters, Boolean throwIfCallSiteNotFound) at Microsoft.Extensions.DependencyInjection.ServiceLookup.Service.CreateCallSite(ServiceProvider provider, ISet
1 callSiteChain) в Microsoft .Extensions.DependencyInjection.ServiceProvider.GetResolveCallSite (служба IService, ISet1 callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetServiceCallSite(Type serviceType, ISet
1 callSiteChain) в Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor (тип serviceType, ServiceProvider serviceProvider ) в 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 (тип serviceType) в Microsoft. Extensions.DependencyInjection.Service ProviderServiceExtensions.GetRequiredService (поставщик IServiceProvider, тип serviceType) в Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService [T] (поставщик IServiceProvider) в Microsoft.EntityFrameworkCore.Design.DatabaseOperations.ReverseEngineerAsync (поставщик String, String connectionString, String outputDir, String dbContextClassName, IEnumerable1 schemas, IEnumerable
1 таблицы, Boolean useDataAnnotations, Boolean overwriteFiles, CancellationToken cancelationToken) в Microsoft.EntityFrameworkCore.Design.Internal.OperationExecutor.ReverseEngineerAsync (поставщик String, String connectionString, String outputDir, String dbContextClassName, IEnumerable1 schemaFilters, IEnumerable
1 tableFilters, Boolean useDataAnnotations, Boolean overwriteFiles, CancellationToken cancelationToken) в Microsoft.EntityFrameworkCore.Tools.Cli.DbContextScaffoldCommand.d__1.MoveNext () --- Конец внутренней трассировки стека исключений --- в System.Threading.Tasks.Task.Tro 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 [], Boolean throwIfCallSiteNotFound) в Microsoft.Extensions.DependencyInjection.ServiceLookup.Service.CreateCallSite (поставщик ServiceProvider, ISet1 callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetResolveCallSite(IService service, ISet
1 callSiteChain) в Microsoft.Extensions.DependencyInjection.ServiceProvider.GetServiceCallSite (тип serviceType, ISet1 callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Type serviceType, ServiceProvider serviceProvider) at System.Collections.Concurrent.ConcurrentDictionaryExtensions.GetOrAdd[TKey,TValue,TArg](ConcurrentDictionary
словарь1 callSiteChain) at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Type serviceType, ServiceProvider serviceProvider) at System.Collections.Concurrent.ConcurrentDictionaryExtensions.GetOrAdd[TKey,TValue,TArg](ConcurrentDictionary
2, ключ 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 схемы, IEnumerable1 tables, Boolean useDataAnnotations, Boolean overwriteFiles, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Design.Internal.OperationExecutor.ReverseEngineerAsync(String provider, String connectionString, String outputDir, String dbContextClassName, IEnumerable
1 schemaFilters, IEnumerable`1 tableFilters , Boolean useDataAnnotations, Boolean overwriteFiles, CancellationToken cancelationToken) в Microsoft.EntityFrameworkCore.Tools.Cli.DbContextScaffoldCommand.d__1.MoveNext () <--- Произошла одна или несколько ошибок. (Невозможно разрешить службу для типа «Microsoft.EntityFrameworkCore.Scaffolding.IScaffoldingModelFactory» при попытке активировать «Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineeringGenerator».)
Я пытался изменить версии моих зависимостей взад и вперед, но без результата. У кого-нибудь есть указатели?
Просто заставил его работать. Я обновился до .net core 1.1.0 и модифицировал свой проект.json для использования более новых версий. Надеюсь, это поможет кому-то еще
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"
}
Вы пробовали использовать RTM-версию Entity Framework?
{
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.1"
}