"显影剂/测试" SQL数据库的模式

时间:2017-09-01 08:16:29

标签: c# sql-server database entity-framework testing

我是一个使用带有C#和实体框架的Microsoft SQL服务器数据库的相对较大的项目的新手。

目前的开发过程是这样的:

  • 编写某些功能/打算修复错误
  • 启动应用程序
  • 通过GUI对数据库进行一些更改,测试编码功能/测试是否已修复错误
  • 如果失败 - >运行SQL脚本以删除完整的数据库更改并重复整个过程

我想知道是否有任何" test / developer" -mode for SQL数据库可以自动恢复应用的更改。基本上,当程序运行时,应该将所有内容插入/更新/删除到实际数据库,但之后应自动恢复所有更改。我的想法完全不合理吗?我们的SQL脚本程序或多或少是数据库开发的最新技术吗?

提前致谢!

编辑:我们正在使用开发人员数据库和实体的代码优先方法。每次运行SQL脚本以保持我的开发人员数据库"清理/可用/免于损坏的数据"对我来说仍然非常烦人。有时候你编写的代码功能只能在生产和编码中使用一次,需要你测试几次,这意味着你需要重置数据库一次/次测试。

1 个答案:

答案 0 :(得分:2)

简短回答:不,你不能在SQL Server中做到这一点,除非你每次想要对数据库进行一些更改时进行备份,并在出现问题时恢复它!

答案很长: 在生产数据库上开发和测试是个坏主意。开发人员必须拥有自己的数据库才能根据数据库开发和测试代码。最好在代码中抽象数据库,以便在不需要真实数据库的情况下使代码可单元测试。

如果您不想抽象数据库,则仍需要使用测试数据库。

使用EntityFramework + SQL Server,以便Code First approach使用map database to code

您还可以使用Entity Framework Migrations跟踪数据定义级别的更改。

如果您需要新数据库有一些初始数据,可以使用seed method in database initializer