6

私はすべての依存関係を1.1で正しく実行していると思いますが、ここで手順を実行しようとするとhttps://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/new-db私はAdd-Migrationコマンドを実行中にエラーが発生します。起動クラス「スタートアップ」に関するメソッド「ConfigureServices」の呼び出し中にEFコア1.1からWebApiコア - 追加移行が失敗する

PM>アドオンの移行初期状態

エラーが発生しました。私project.jsonの

Consider using IDbContextFactory to override the initialization of the DbContext at design-time. Error: This method could not find a user secret ID because the application’s entry assembly is not set. Try using the “.AddUserSecrets(Assembly assembly)” method instead. No parameterless constructor was found on ‘ApplicationDbContext’. Either add a parameterless constructor to ‘ApplicationDbContext’ or add an implementation of ‘IDbContextFactory’ in the same assembly as ‘ApplicationDbContext’.

関連セクション: ...

“Microsoft.EntityFrameworkCore”: “1.1.0”, 
“Microsoft.EntityFrameworkCore.SqlServer”: “1.1.0”, 
“Microsoft.EntityFrameworkCore.Design”: { 
“type “: “build”, 
“version”: “1.1.0” 
}, 
“Microsoft.EntityFrameworkCore.Tools”: “1.1.0-preview4-final” 
}, 

“tools”: { 
“Microsoft.EntityFrameworkCore.Tools.DotNet”: “1.1.0-preview4-final” 
}, 

私ApplicationDbContextはコンストラクタ持っている:

public ApplicationDbContext(DbContextOptions options) : base(options) 
{ } 

を、私のStartup.csを持っています:

services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString(“DefaultConnection”))); 

ほかに何がありますか?あなたの問題はEFコアに関連していない

答えて

1

代替ソリューション:

私は同じ問題に遭遇し、ここに上陸しました。しかし、私はDotNetCore WebAppと個別の認証を使って、すべてのステップでそれを比較して最初からアプリを書いています。最新の習慣に従うことを望んでいるVS 2017のウィザードによって生成されます。だから私のコードと生成されたコードですべてが同じで、この例外が発生したときは奇妙でした。生成されたコードにはstartup.csにMichael Dennisの提案したコードがありませんでした。これは彼が間違っているということではありません。さらに下に飛び降りると、UserSecretsIdがmyprojetnameで宣言されていることが分かりました。次のように入力します。

<PropertyGroup> 
    <UserSecretsId>aspnet-mywebproect-006a401f-2fdc-4aad-abb1-12c00000004a</UserSecretsId> 
</PropertyGroup> 

私のproject.csprojファイルにエントリを追加すると、問題は解決されました。

+1

ありがとうハッサン。はい、上記のソリューションはVS2015用でした。私は最近VS2017に私のプロジェクトをアップグレードしてproject.jsonの代わりにCSPROJに入れているようになったので、あなたはもはやその属性を必要としません。 –

1

、それについてUser Secrets

はあなたのStartup.csコンストラクタを確認しています - それはAddUserSecrets()コールが含まれています。削除することができます。後でユーザーの秘密について読むと正しい設定で追加することができます(ウェブサイトのテンプレートが1.0.0、ライブラリ1.1.0を参照していると思います - this bug fixが含まれています)

+0

はい、AddUserSecrets()に関連していました。その行をコメントアウトすると、移行を追加できます。 –

+0

ただし、あなたが提供したバグ修正リンクでは問題は解決しません。 project.jsonの存在を確認すると(下)、移行はまだ失敗します。 'if(env.IsDevelopment()&& builder.GetFileProvider()。GetFileInfo(" project.json ")が存在する) { builder.AddUserSecrets(); } ' –

+0

はい、' AddUserSecrets'を返すので失敗します:)正しく設定する必要があります。 https://github.com/aspnet/Announcements/issues/209を確認してください。 – Dmitry

5

この問題は、 builder.AddUserSecrets()呼び出し。 スタートアップで

  • Startup.cs に属性[assembly: UserSecretsId("aspnet-TestApp-ce345b64-19cf-4972-b34f-d16f2e7976ed")]を追加することにより、(だけではなくproject.jsonの)アセンブリに、ユーザ秘密を追加

    1. :修正するには、以下の手順を実行します。 CSbuilder.AddUserSecrets<Startup>();

    REFEとbuilder.AddUserSecrets()を置き換えますrence:InvalidOperationException: Could not find 'UserSecretsIdAttribute' on assembly

  • +0

    私が使用しているバージョンでは、ユーザシークレット文字列を 'builder.AddUserSecrets()'にパラメータとして渡すことができます。 –

    関連する問題