2017-12-28 15 views
0

SQLデータベースを追加すると、Startup.csにエラーが発生します。私は次のように入力しますASP.NetコアでSqlServerをセットアップする - GetRequiredServiceが原因でエラーが発生する

services.AddDbContext<ModelContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DatabaseConnection"))); 

よく私は実際のProgram.csからそれを得るが、エラーが上記のラインに由来します。発信者:

var context = services.GetRequiredService<ModelContext>(); 

エラーメッセージは次のとおりです。

Method 'Clone' 
in type 'Microsoft.EntityFrameworkCore.Infrastructure.Internal.SqlServerOptionsExtension' 
from assembly 'Microsoft.EntityFrameworkCore.SqlServer, Version=1.1.5.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' does not have an implementation. 

誤差源がある:

Microsoft.EntityFrameworkCore.SqlServer 

完全なエラーメッセージ:

+  Data {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal} 
     HResult -2146233054 int 
     HelpLink null string 
+  InnerException null System.Exception 
     Message "Method 'Clone' in type 'Microsoft.EntityFrameworkCore.Infrastructure.Internal.SqlServerOptionsExtension' from assembly 'Microsoft.EntityFrameworkCore.SqlServer, Version=1.1.5.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' does not have an implementation." string 
     Source "Microsoft.EntityFrameworkCore.SqlServer" string 
     StackTrace " at Microsoft.EntityFrameworkCore.SqlServerDbContextOptionsExtensions.UseSqlServer\r\n at FltCandidates.Startup.<ConfigureServices>b__4_0(DbContextOptionsBuilder options) in C:\\Users\\garry\\source\\repos\\FltCandidates\\FltCandidates\\Startup.cs:line 35\r\n at Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.<>c__DisplayClass0_0`1.<AddDbContext>b__0(IServiceProvider p, DbContextOptionsBuilder b)\r\n at Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.DbContextOptionsFactory[TContext](IServiceProvider applicationServiceProvider, Action`2 optionsAction)\r\n at Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.<>c__DisplayClass5_0`1.<AddCoreServices>b__0(IServiceProvider p)\r\n at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, ServiceProvider provider)\r\n at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)\r\n at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProvider provider)\r\n at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)\r\n at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, ServiceProvider provider)\r\n at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)\r\n at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite, ServiceProvider provider)\r\n at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(IServiceCallSite callSite, TArgument argument)\r\n at Microsoft.Extensions.DependencyInjection.ServiceProvider.<>c__DisplayClass22_0.<RealizeService>b__0(ServiceProvider provider)\r\n at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType)\r\n at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)\r\n at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)\r\n at FltCandidates.Program.Main(String[] args) in C:\\Users\\garry\\source\\repos\\FltCandidates\\FltCandidates\\Program.cs:line 26" string 
+  TargetSite {System.Reflection.RuntimeMethodInfo} System.Reflection.MethodBase {System.Reflection.RuntimeMethodInfo} 
     TypeName "Microsoft.EntityFrameworkCore.Infrastructure.Internal.SqlServerOptionsExtension" string 

私.CSProjは含まれています

<PropertyGroup> 
    <TargetFramework>netcoreapp2.0</TargetFramework> 
    </PropertyGroup> 

    <ItemGroup> 
    <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.1.1" /> 
    <PackageReference Include="Microsoft.AspNetCore" Version="2.0.1" /> 
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.1" /> 
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.1" /> 
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.1" /> 
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.5" /> 
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.1" /> 
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.0" /> 
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.1" /> 
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.1" /> 
    </ItemGroup> 

    <ItemGroup> 
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" /> 
    </ItemGroup> 

質問は、質問以下のコメントに答えた

任意およびすべてのヘルプをいただければ幸いです。 SqlServerはインストールされてしまいましたが、何らかの理由でNuGetに表示されませんでした。新しいバージョンのsqlserverをインストールしようとすると、NuGetは既にインストールされている「見えない」SqlServerを更新しました。

+0

CandidateContextを追加してModelContextを取得しようとしていますか? – cloudikka

+0

申し訳ありませんが、私はすべてのCandidateContextだった私は悪い、私はそれらをModelContextにすべて名前を変更したと思った。私はそれがより標準的な方法でそれを見ることをより容易にすると思ったように私はテキストの中でそれらを編集しました。 – Monofuse

+1

さて、問題はおそらく[Microsoft.EntityFrameworkCore.SqlServer](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer/)のnugetパッケージバージョンにあります。新しいバージョンのEFコアで1.1.5.0より古いバージョンを使用しようとしています。 2.0.1にアップデートしてください – cloudikka

答えて

1

.CSprojファイルの外観では、Microsoft.EntityFrameworkCore.SqlServerパッケージがインストールされていない.Net Core 2プロジェクトです。

<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.1" /> 

このパッケージには、現在のバージョンは1.1.5で、Microsoft.EntityFrameworkCore.SqlServerに同じバージョン番号がインストールされますMicrosoft.EntityFrameworkCore.SqlServer.Desingの依存でもある:あなたがのような行が不足しているので、あなたが言うことができます。この問題は、Clone()メソッドがEntity Framework Core 2にのみ存在するということです。つまり、バージョンにMicrosoft.EntityFrameworkCore.SqlServerパッケージをインストールまたは更新する必要があります。このバージョンはMicrosoft.EntityFrameworkCore.SqlServer.Desing

と互換性があります。

+0

質問は質問の下のコメントで答えられました。 SqlServerはインストールされてしまいましたが、何らかの理由でNuGetに表示されませんでした。新しいバージョンのsqlserverをインストールしようとすると、NuGetは既にインストールされている「見えない」SqlServerを更新しました。 – Monofuse

関連する問題