c# - SQL 数据库的 "developer/test"模式

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

我是一个相对较大的项目的新手,该项目使用带有 C# 和 Entity Framework 的 Microsoft SQL 服务器数据库。

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

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

我想知道是否有任何 SQL 数据库的“测试/开发”模式可以自动恢复应用的更改。基本上,在程序运行时,所有内容都应插入/更新/删除到实际数据库中,但之后所有更改都应自动恢复。我的想法完全不合理吗?我们使用 SQL 脚本的过程或多或少是数据库开发的最新技术水平吗?

提前致谢!

编辑:我们正在使用开发人员数据库和实体的代码优先方法。每次运行 SQL 脚本以保持我的开发人员数据库“干净/可用/没有损坏的数据”对我来说仍然很烦人。此外,有时您编写的功能本应在生产环境中只工作一次,而编写该功能时,需要您对其进行多次测试,这意味着您需要在测试后一次/次地重置数据库。

最佳答案

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

长答案: 在生产数据库上开发和测试不是一个好主意。开发人员必须拥有自己的数据库,才能针对数据库开发和测试代码。此外,最好在您的代码中抽象数据库,以使您的代码无需真实数据库即可进行单元测试。

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

使用 EntityFramework + SQL Server,这样您就可以使用 Code First approachmap database to code .

您也可以使用 Entity Framework Migrations跟踪数据定义级别的变化。

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

关于c# - SQL 数据库的 "developer/test"模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45995922/

相关文章:

c# - SignalR 客户端中心代理未定义

sql - 清除 SQL 表

java - 如何存储和管理大文件

Android-SQLite数据库管理

c# - C#URL,获取所有类型为 “audio/webm”的文件

C#、C++、WinAPI - 从另一个进程获取窗口数

c# - Lucene 和正斜杠

sql-server - 该图像在 SQL Server 数据库中是如何编码的?

sql-server - 如何在 SQL Server 数据库中设计用户/角色架构?

database - 审计跟踪和实现 SOX/HIPAA/等,敏感数据的最佳实践