2014-09-06 1 views
4

먼저 마이그레이션시 Entity Framework 코드를 사용하고 있으며 __MigrationHistory 테이블을 제외한 모든 테이블에서 Seed 메서드의 모든 데이터를 삭제하려고합니다. 데이터베이스가 깨끗 해지면 바로 시드 메서드를 진행하지만 새 개체를 추가합니다.시드 방법의 모든 데이터를 삭제하려면 어떻게해야합니까?

개발 데이터베이스를 사용하여 개발하고 끊임없이 기본 상태로 재설정하려고하므로이 기능이 필요합니다.

그래서 시드 메서드에서 __MigrationHistory를 제외한 모든 테이블의 모든 데이터를 삭제하는 가장 좋은 방법은 무엇입니까?

답변

10
public override void Seed(YourNamespace.Model.DbContext context) 
{ 
      // Deletes all data, from all tables, except for __MigrationHistory 
      context.Database.ExecuteSqlCommand("sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'"); 
      context.Database.ExecuteSqlCommand("sp_MSForEachTable 'IF OBJECT_ID(''?'') NOT IN (ISNULL(OBJECT_ID(''[dbo].[__MigrationHistory]''),0)) DELETE FROM ?'"); 
      context.Database.ExecuteSqlCommand("EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'"); 

      // proceed with the seed here 
} 
관련 문제