2017-09-15 142 views
1

我正在用EF Core(2.0.0)創建我的第4個遷移腳本。在那裏我想爲數據庫添加一些角色。使用實體框架核心遷移創建角色

問題是,我不確定如何做到這一點。目前,我有這樣的:

protected override void Up(MigrationBuilder migrationBuilder) 
{ 
    // todo: Pass connection string somehow..? 
    var opt = new DbContextOptions<ApplicationContext>(); 
    var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationContext(opt))); 

    //if (!roleManager.RoleExists("ROLE NAME")) 
    //{ 
     // todo: create the role... 
    //} 
} 

但創建RoleManager一樣,給了我以下錯誤:

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

我不知道如何解決這個問題。我找不到任何有關如何在.NET Core中使用遷移正確執行此操作的信息。

我在這段代碼中面臨的兩個問題:

  • 我試圖以某種方式創建的DbContext的一個實例。我應該不能從我的遷移代碼中獲取DbContext?
  • 像這樣實例化RoleManager不起作用,需要解決。

我該如何解決這些問題?

回答

0

Up方法基本上是一個指令文件,告訴EF的數據庫遷移者如何生成數據庫升級腳本。該方法在腳本生成時執行。做任何數據操作絕對不合適。 EF內核還不支持播種,因此您必須在應用程序啓動時添加缺失的角色,例如this