2016-11-14 15 views
0

コードの最初のマイグレーションを使用してデータベースをシードしましたが、シードされたデータをindex.htmlで表示するとデータがレプリケートされました。シードされたデータが複製される最初のマイグレーション

これは、設定ファイルであるIデータを播種した。

内部封止さクラス構成:DbMigrationsConfiguration {公共の構成()偽 {AutomaticMigrationsEnabled =は、 }

protected override void Seed(OnlineBookStore.Models.OnlineBookStoreDB context) 
    { 

     var books = new System.Collections.Generic.List<Book> 
     { 
      new Book { 

     BookStatus = new BookStatus { Status = "New" }, 
      Genre = new Genre { Name = "Thriller" }, 
      Author = new Author { Name = "Paula Hawkins" }, 
      Title = "The Girl On The Train", 
      Description = "Rachel catches the same commuter train   morning. ", 
      ISBN = 0552779776, 

      }, 


     new Book 
     { 
      BookStatus = new BookStatus { Status = "Best Seller" }, 
      Genre = new Genre { Name = "Childrens" }, 
      Author = new Author { Name = "Roald Dahl" }, 
      Title = "The Witches", 
      Description = "Beware. Real witches dress in ordinary clothes", 


      ISBN = 0141365471, 

     }, 
     }, 

     }; 

books.ForEach(s =>context.Books.AddOrUpdate(p => new { p.ISBN, p.Title })); 
      context.SaveChanges(); 


    } 
} 

}

私は、この上で日々を過ごした私が間違っているつもりされたのは本当に分かりませんよ! 本当にありがとうございます。ありがとう!

答えて

0

Seed()はすべてのupdate-databaseが発行されるたびに実行されるため、AddOrUpdateでキーを指定する必要があります。

// build your books collection 
    var books = new [] 
    { 
     new Book { 

    BookStatus = new BookStatus { Status = "New" }, 
     Genre = new Genre { Name = "Thriller" }, 
     Author = new Author { Name = "Paula Hawkins" }, 
     Title = "The Girl On The Train", 
     Description = "Rachel catches the same commuter train   morning. ", 
     ISBN = 0552779776, 

     }, 


    new Book 
    { 
     BookStatus = new BookStatus { Status = "Best Seller" }, 
     Genre = new Genre { Name = "Childrens" }, 
     Author = new Author { Name = "Roald Dahl" }, 
     Title = "The Witches", 
     Description = "Beware. Real witches dress in ordinary clothes", 


     ISBN = 0141365471, 

    }, 
    }, 

    };  


context.Books.AddOrUpdate(p => new { p.ISBN, p.Title }, books); 
context.SaveChanges(); 

http://thedatafarm.com/data-access/take-care-with-ef-4-3-addorupdate-method/

+0

感謝を参照してください、私はそれをしなかったが、それは、私はそれが(P)であるようにエラーがあると思いpは現在のコンテキスト内に存在しない、次のコードでは、pがされたであると述べて赤色で強調表示されています:new {p.ISBN、p.Title} –

+0

申し訳ありませんが、コードを間違ってコピーしました。既にコレクションを作成している場合は、foreachは必要ありません。編集を参照してください。 –

+0

おかげさまで、あなたのコードは動作しませんでした。次のコードの書籍はエラーとして表示されます。context.Books.AddOrUpdate(p => new {p.ISBN、p.Title}、books); –

関連する問題