2016-05-14 60 views
0

我想用實體框架來填充我的數據庫。我正在使用Seed覆蓋並使用我的DbContext中的set初始值設定項。當我從頭開始創建我的數據庫時,似乎並沒有將這些值添加到!用數據爲我的EF數據庫播種

public class PokemonDatabaseInitializer : CreateDatabaseIfNotExists<PkmnContext> 
{ 
     protected override void Seed(PkmnContext context) 
     { 
      var pkm = new Pokemon 
      { 
       Id = 25, 
       DisplayName = "Pikachu", 
       RegionId = 1 
      }; 

      var region = new PokemonRegion 
      { 
       Id = 1, 
       Kanto = true, 
      }; 

      var location = new PokemonLocation 
      { 
       AreaFound = "Viridian Forest", 
       Id = 1 
      }; 

      context.Pokemons.Add(pkm); 
      context.PokemonRegions.Add(region); 
      context.PokemonLocations.Add(location); 

      context.SaveChanges(); 

      base.Seed(context); 
    } 
} 

public class PkmnContext : DbContext 
{ 
     public PkmnContext() 
     { 
      Database.SetInitializer(new PokemonDatabaseInitializer()); 
     } 

     public DbSet<Pokemon> Pokemons { get; set; } 
     public DbSet<PokemonRegion> PokemonRegions { get; set; } 

     public DbSet<PokemonLocation> PokemonLocations { get; set; } 
} 

回答

0

需要調用

更新數據庫

從包管理器控制檯。這也可以從代碼中調用它的任何遷移都適用

後,請注意,它會在每次調用時種子數據,所以如果項目已經存在

+0

我已經運行更新的數據庫,但似乎沒有我想補充一些檢查顯示填充。我是否正確地將我的行連接在種子方法中? –

+0

@magna_nz種子你正在做的權利。你正在調用savechanges。我會檢查所有連接字符串,因爲可能是您的默認項目(或者如果您沒有默認,然後選定的項目)有不同的連接到其他數據庫 –

+0

不要認爲這是連接字符串問題,因爲我的數據庫正在創建,只是不填充。 –