我首先将 Entity Framework 代码用于迁移,并且我想从所有表中删除 Seed 方法中的所有数据,但 __MigrationHistory 表除外。在我的数据库清理之后,我将继续使用种子方法,但只是添加新对象。
我想要这个是因为我使用开发数据库进行开发并且我一直想将其重置为默认状态。
那么,在种子方法中从所有表中删除所有数据的最佳方法是什么?__MigrationHistory 除外?
最佳答案
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
}
关于entity-framework - 如何删除种子方法中的所有数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25702693/