c# - 验证目标数据库架构是否符合 Entity Framework 中的内容?

标签 c# entity-framework testing

我们有一个流程,我们的数据库人员使用我们的代码库对应用程序的数据库进行脚本更改(并使用 Juneau 对其进行版本控制)。他们擅长解释新列是否为空,而不是删除现有数据,但偶尔会出现未完全传达的列重命名。因此,他们将对测试服务器上的数据库模式进行一些更改,我们将更新 Entity Framework 以处理这些更改,然后提交我们的代码。此过程工作正常,除了需要部署的时候。

我们设置了 TFS 以将成功的构建部署到适当的服务器,但不能保证该环境的数据库已更新。我们不关心是否有额外的字段/表/ View /等。存在于目标数据库中,但我们希望更改构建以检查数据库是否至少包含 EF 知道的所有内容。

我看了this question ,但我不需要模式完全匹配。另外,我们不希望它直接创建/修改数据库。和 this question看起来它正在努力实现类似的理想,但仍然不是我们想要实现的目标。我们只需要某种集成测试来验证我们的 EF 版本是否适用于目标架构。

最佳答案

我想知道为什么您尝试在不更改数据库的情况下部署您的应用程序。您的应用程序依赖于数据库,因此部署应始终在数据库之后完成。看起来您将投入大量时间来开发验证以修复错误的部署过程(修复过程本身是正确的解决方案)。

无论如何,您可以创建一些数据库的“验证”,但这需要一些时间。如果您使用的是 EDMX 文件,您可以将其作为 XML 打开并阅读其 SSDL描述所有预期表、列、关系、 View (以 SELECT SQL 查询的形式)、存储过程和函数的部分。您可以解析此 XML 部分并使用系统数据库 View (sys.tablessys.columns、...)来查询这些对象是否存在于数据库中。

另一种方法可以使用数据库差异。将当前测试数据库与目标数据库进行比较的工具。这将需要可以从命令行执行的工具,您将必须解析其输出以找到重大更改。

关于c# - 验证目标数据库架构是否符合 Entity Framework 中的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8098074/

相关文章:

c# - 卸载程序在 Development Box 上运行后保留 COM 注册

c# - 如何访问通用存储库类中的 DbContext.Entry<TEntity> 方法 (TEntity)?

testing - 戈朗 : Find filenames and line numbers that prints output to stdout

testing - 在 Play-SBT 中配置 HTMLUNIT 的日志级别

c# - Image.RotateFlip 泄漏内存 :/

c# - 如何在运行时在 xaml 中将特定单词作为超链接

c# - 等待 Task.Delay 似乎不起作用

c# - Entity Framework Core 尝试在调用 SaveChanges() 时插入重复记录

c# - Entity Framework 代码第一次延迟

java - 如何将 node.js 合并到 java 测试中?