web-dev-qa-db-ja.com

IDesignTimeDbContextFactoryの実装を追加して、.Net core 2.0アプリケーションへの移行を追加する方法

.NET Core 2.0 MVCアプリケーションのパッケージマネージャーコンソールからAdd-Migration InitialCreateコマンドを実行しようとしています。すべての可能なソースを調べた後も、エラーの説明で問題を解決できない場合:

_PM> Add-Migration InitialCreate
_

クラス 'Program'のメソッド 'BuildWebHost'の呼び出し中にエラーが発生しました。アプリケーションサービスプロバイダーなしで続行します。エラー:メソッドが見つかりません: 'System.Collections.Generic.Dictionary2<System.String,System.Object> Microsoft.Extensions.Configuration.IConfigurationBuilder.get_Properties()'. System.IO.FileLoadException: Could not load file or Assembly 'System.Diagnostics.DiagnosticSource, Version=4.0.2.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The located Assembly's manifest definition does not match the Assembly reference. (Exception from HRESULT: 0x80131040) File name: 'System.Diagnostics.DiagnosticSource, Version=4.0.2.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' at Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServicesBuilder.TryAddCoreServices() at Microsoft.Extensions.DependencyInjection.SqlServerServiceCollectionExtensions.AddEntityFrameworkSqlServer(IServiceCollection serviceCollection) at Microsoft.EntityFrameworkCore.Infrastructure.Internal.SqlServerOptionsExtension.ApplyServices(IServiceCollection services) at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.ApplyServices(IDbContextOptions options, ServiceCollection services) at Microsoft.EntityFrameworkCore.Internal.ServiceProviderCache.<>c__DisplayClass4_0.<GetOrAdd>b__2(Int64 k) at System.Collections.Concurrent.ConcurrentDictionary 2.GetOrAdd(TKey key、Func2 valueFactory) at Microsoft.EntityFrameworkCore.DbContext..ctor(DbContextOptions options) at MvcMovie.Models.MvcMovieContext..ctor(DbContextOptions 1 options)in C:\ Users\Neha\source\repos\MvcMovie\MvcMovie\Data\MvcMovieContext.cs:line 12 at MvcMovie.ToDoContextFactory.CreateDbContext(String [] args)in C:\ Users\Neha\source\repos\MvcMovie\MvcMovie\ToDoContextFactory.cs:line 17 at Microsoft.EntityFrameworkCore.Design。内部.DbContextOperations.CreateContext(Func1 factory) at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType) at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0 1.b__0()at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)

_Could not load file or Assembly 'System.Diagnostics.DiagnosticSource, Version=4.0.2.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The located Assembly's manifest definition does not match the Assembly reference. (Exception from HRESULT: 0x80131040)
_

私のProgram.csは次のようになります。

_ public class Program
{
    public static void Main(string[] args)
    {
        var Host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .UseApplicationInsights()
            .Build();

        Host.Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();
}
_

の実装も追加

IDesignTimeDbContextFactory

_public class ToDoContextFactory : IDesignTimeDbContextFactory<MvcMovieContext>
{
    public MvcMovieContext CreateDbContext(string[] args)
    {
        var builder = new DbContextOptionsBuilder<MvcMovieContext>();
        builder.UseSqlServer("Server=(local);Database=MvcMovieContext;Trusted_Connection=True;MultipleActiveResultSets=true");
        return new MvcMovieContext(builder.Options);
    }
}
_

誰かが.NET Core2.0アプリにモデルとEntity Frameworkツールを追加するための説明的な段階的な手順で私を助けてくれますか?.

9
Neha

クラスプログラムを変更する必要があります

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();
}

このクラス 変更 dotnet core 2.0.0

9
Thiago Silva

同じ問題があった。 Microsoft.AspNetCore.Allを2.0.0-preview2-finalから2.0.0に更新した後に発生しました。失敗する理由は、.NET Core Preview 2ランタイムがインストールされているためです。

EFCoreも更新されました。だから、あなたが同じnugetとランタイムバージョンを持っていることを確認してください

UPDATE:.NET CoreランタイムとSDK 2.0がリリースされました https://www.Microsoft.com/net/download/core =。インストール後、パッケージを2.0.0に安全に更新できます

2

同じ問題があった

私のソリューションには、コンソールアプリケーションと、dbcontextコードを含むapiアプリケーションが含まれていました。

起動プロジェクトをコンソールアプリケーションに設定しました。起動プロジェクトをapiアプリケーションに変更すると、エラーが消えました。

0
Kirsten Greed