如何删除种子方法引入的种子数据?

时间:2015-07-01 08:34:19

标签: asp.net ef-migrations

我有一个项目,我会介绍一些示例数据供我测试。但是,当我将项目部署到预生产服务器以供我的客户端进行测试时,他说当他删除测试数据(由Seed方法引入)时,下次登录应用程序时,它仍然存在。有办法防止这种情况吗? 我认为只有成功更新数据库才会调用Seed方法,但每次应用程序启动时它似乎都在运行。

2 个答案:

答案 0 :(得分:0)

我知道这有点误导。种子方法将始终运行,所以是 - 您的数据将被重新创建。我要做的是避免这种情况,在方法中进行一些简单的检查(例如,如果DbSet包含任何记录 - >不要播种)。

这不是100%可靠,因为如果从预生产表中删除所有数据,它仍然会被测试数据播种。但是对于我的需求,它总是足够好。

答案 1 :(得分:0)

迁移Seed()是否运行取决于您的数据库初始化程序。如果您使用的是MigrateDatabaseToLatestVersion,则每次都会运行它。您可以将部署的版本切换到每次都不运行Seed方法的初始化程序,例如NullDatabaseInitializer。然后,当您需要应用更新时,您可以生成脚本(https://msdn.microsoft.com/en-us/data/jj591621.aspx#script)。

请点击此处查看种子信息:http://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods/