2017-04-23 10 views
2

最初にデータベースを作成するときに、IDのコンテキストにいくつかのロールをシードしようとしています。Entity Frameworkを使用したASP.NET MVCコアプロジェクトのシードロール

それがここで述べたように、私はコードを実装しようとしたことについては

https://stackoverflow.com/a/29547994/985798

を、私は私のスタートアップクラスの内部ConfigureServices-方法でこれを試してみました: ます。public void ConfigureServices(IServiceCollectionサービス)

をこのスニペットを使用した:

var rolestore = 
    new Microsoft.AspNetCore.Identity.EntityFrameworkCore. 
     RoleStore<Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole>(identityContext); 

var roleManager = new Microsoft.AspNetCore.Identity.RoleManager 
        <Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityRole>(rolestore); 

//use rolemanager to insert roles etc. 

問題は、Visual Studio 2017で作成された新鮮なコア・プロジェクト、では動作しないように見えるということであり、

それは私に次のビルドエラーを与える:私は(他のパラメータにnull値を持つ)他のオーバーロードを使用する場合でも

CS7036 There is no argument given that corresponds to the required formal parameter 'roleValidators' of 'RoleManager.RoleManager(IRoleStore, IEnumerable>, ILookupNormalizer, IdentityErrorDescriber, ILogger>, IHttpContextAccessor)'

、RoleManagerはもう何の「作成」メソッドを持っていないようです。

私はこの時点で固執しています。私は何をする必要がありますか? rolemanagerのASP.NET MVCコア実装で何か変わったのですか?私は間違ったことを使用しますか? startup.cs

Seed.Initialize(app.ApplicationServices); 

HTHで次にConfigure()内のコードの大部分は、以下の

+0

コンパイルした後、Seed()を実行すると問題が発生することがあります。 AfaikはEfCore 2.0を予定しています。 –

+0

正確にはどういう意味ですか?スタートアップの中で実行するとうまくいくはずですね。私は知っている、それは最高の場所ではないかもしれないが、私はそれがうまくいくと思う。 – Jannik

+2

"newing" RoleManagerの代わりに、 'Configure'メソッドでそれを解決してみてください。 [類似の投稿](https://stackoverflow.com/questions/39934201/asp-net-core-identity-add-custom-user-roles-on-application-startup/39934793#39934793)と[MusicStore](https: //github.com/aspnet/MusicStore/blob/1.0.0/src/MusicStore/Models/SampleData.cs#L22-L34) – tmg

答えて

3
using Microsoft.AspNetCore.Identity; 
using Microsoft.AspNetCore.Identity.EntityFrameworkCore; 
using Microsoft.Extensions.DependencyInjection; 

public static class Seed 
{ 
    public static void Initialize(IServiceProvider provider) 
    { 
     var _context = provider.GetRequiredService<ApplicationDbContext>(); 
     var userManager = provider.GetRequiredService<UserManager<ApplicationUser>>(); 
     var roleManager = provider.GetRequiredService<RoleManager<IdentityRole>>(); 


    } 
} 

(お役に立てば幸いです)。

+0

ありがとうございますが、HTHは何を意味していますか? – Jannik

+0

HTH(助けて欲しい) – mvermef

+3

非同期メソッドで非同期呼び出しの待機をどのように処理するのですか? –

関連する問題