2017-11-22 7 views
0

データベースの移行前に、データベースが存在しないときにCreateDatabaseIfNotExistsとシードを使用することができました。しかし、私は移行を導入したため、DbMigrationsConfigurationに基づいてConfigurationクラスを変更しました。しかし、データベースなしでDbMigrationsConfigurtion、シード機能(複数可)(context.SaveChanges中に失敗)と:空のデータベースにDbMigrationsConfigurationをシードしたときの "無効なオブジェクト名"例外

起動中:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<RegistrationServerContext, Migrations.Configuration>()); 
RegistrationServerContext db = new RegistrationServerContext(); 
db.Database.Initialize(true) 

モデル/ DbContext:

構成内
public class RegistrationServerContext : DbContext 
{ 
    public DbSet<ABC> ABCs { get; set; } 
    public DbSet<XYZ> XYZs { get; set; } 
} 

internal sealed class Configuration : DbMigrationsConfiguration<Models.RegistrationServerContext> 
    { 
     public Configuration() 
     { 
      AutomaticMigrationsEnabled = true; 
     } 

     protected override void Seed(Models.RegistrationServerContext context) 
     { 
      SeedABCs(context); 
      base.Seed(context); 
     } 

     private void SeedABCs(Models.RegistrationServerContext context) 
     { 
      var reader = new StreamReader(..); 
      Models.ABC seedABC = new Models.ABC(); 
      while (!reader.EndOfStream) 
      { 
       var line = reader.ReadLine(); 
       var values = line.Split(','); 
       seedABC.a = values[0]; 
       seedABC.b = values[1]; 
       seedABC.c = values[2]; 
       context.ABCs.Add(seedABC);// <== seedABC is good/valid 
       context.SaveChanges();// **<== FAILS HERE** 
      } 
     } 
    } 

答えて

0

SQLの専門家ではないので、私は今データベース削除されていない - SQL ServerのManagement Studioを使用してデータベースを削除し、シーディングが機能するようになりました。 Entity FrameworkがSQLの仕組みからあなたを守っているのと同じように、基本的なデータベース技術を確認して操作を確認することは常に良いことです。

関連する問題