2017-01-21 27 views
0

我正在創建一個足球經理遊戲。我使用了身份2.0,因爲它對我的註冊和登錄很有幫助。我能夠添加所需的額外表格,但現在我需要將這些數據(如團隊和玩家)播種到這些表格中。任何想法如何做?額外的表格是使用遷移在身份模型中創建的。這是我使用的表格的圖片。如何將數據種子到已創建的數據庫?

tables

+0

種子身份,見[這裏](HTTP://計算器。 COM /問題/ 29526215 /種子實體和用戶,角色/ 29547994#29547994)。關於其他表,請參見[here](http://stackoverflow.com/questions/36896475/database-initialization-in-entity-framework-code-first/36897524#36897524) –

回答

0

在遷移文件夾中,有一個叫做Configuration.cs與您可以用它來創建一些種子數據種子法文件。

protected override void Seed(ApplicationDbContext context) 
{ 
    // This method will be called after migrating to the latest version. 

    // You can use the DbSet<T>.AddOrUpdate() helper extension method 
    // to avoid creating duplicate seed data. E.g. 

    //add roles 
    context.Roles.AddOrUpdate(p => p.Id, 
     new IdentityRole() 
     { 
      Id = EnumUtility<AspNetRoles>.GetAppRoleId(AspNetRoles.None), 
      Name = AspNetRoles.None.ToString() 
     }); 
} 

只要運行update-database,你應該在你的表中有數據。

0

有2種Seed()方法可用 - 一種在某些初始化程序中,例如創建數據庫時運行的CreateDatabaseIfNotExist。另一個是migration Seed(),只要您通過update-database申請遷移,它就會運行。

因爲它在每次遷移時運行,所以您要確保不要複製數據。你可以通過檢查是否存在這樣做:

if (!context.Teams.Any()) 
{ 
    context.Teams.Add(new Team { Name = "Team A" }); 
    context.Teams.Add(new Team { Name = "Team B" }); 

} 

但有一個更好的辦法專門爲遷移叫AddOrUpdate設計:

protected override void Seed(ApplicationDbContext context) 
{ 
    context.Teams.AddOrUpdate(
     team => team.Id, // put the key or unique field here 
     new Team 
     { 
      Id = 1, 
      Name = "Team 1" 
     }, 
     new Team 
     { 
      Id = 2, 
      Name = "Team 2" 
     }); 

    context.SaveChanges(); 
}