我是一个使用带有C#和实体框架的Microsoft SQL服务器数据库的相对较大的项目的新手。
目前的开发过程是这样的:
我想知道是否有任何" test / developer" -mode for SQL数据库可以自动恢复应用的更改。基本上,当程序运行时,应该将所有内容插入/更新/删除到实际数据库,但之后应自动恢复所有更改。我的想法完全不合理吗?我们的SQL脚本程序或多或少是数据库开发的最新技术吗?
提前致谢!
编辑:我们正在使用开发人员数据库和实体的代码优先方法。每次运行SQL脚本以保持我的开发人员数据库"清理/可用/免于损坏的数据"对我来说仍然非常烦人。有时候你编写的代码功能只能在生产和编码中使用一次,需要你测试几次,这意味着你需要重置数据库一次/次测试。
答案 0 :(得分:2)
简短回答:不,你不能在SQL Server中做到这一点,除非你每次想要对数据库进行一些更改时进行备份,并在出现问题时恢复它!
答案很长: 在生产数据库上开发和测试是个坏主意。开发人员必须拥有自己的数据库才能根据数据库开发和测试代码。最好在代码中抽象数据库,以便在不需要真实数据库的情况下使代码可单元测试。
如果您不想抽象数据库,则仍需要使用测试数据库。
使用EntityFramework + SQL Server,以便Code First approach使用map database to code。
您还可以使用Entity Framework Migrations跟踪数据定义级别的更改。
如果您需要新数据库有一些初始数据,可以使用seed method in database initializer。