Entity Framework Core:健全性检查数据库和模型是否同步

Mat*_*ler 6 c# entity-framework-core

我们目前的设置是多个系统使用一个巨大的数据库。在我们最新的系统中,我们使用 Entity Framework Core 和代码优先的方法。不幸的是,其他系统对数据库所做的一些更改不会在代码优先系统中更新。由于我们没有完整的集成测试覆盖范围,因此这些更改有时不会被通知,直到有人偶然使用更改的实体。

我们不能快速地改变设置;因此,如果数据库和模型同步,我们希望进行一些自动健全性检查。在寻找这样的解决方案时,我发现了这段很好的代码:Does an equal to Database.CompatibleWithModel(bool) Exist in EF Core

但明确指出不应使用此代码(而且无论如何它都不再起作用)。我在这里从 Brice 那里找到了更多想法:验证 EF Core ModelSnapshot、迁移和实际数据库架构彼此一致。但这些方法大多是手动方法,不太容易直接从代码中使用。

是否已经有一个解决方案,允许直接从 C# 检查映射和实际数据库之间的同步?检查 Entity Framework Core 接口,我认为我们将拥有所有需要的信息,但以通用方式对此检查进行编程似乎是一项艰巨的任务?

小智 1

不幸的是,如果 EF 引用的数据库中缺少架构的一部分,EF 只会检测并抛出异常。至于从另一个系统添加的字段或表,这将被忽略。

您可以考虑生成一份架构更改报告,每次发生更改时都可以通过电子邮件发送给您的团队:

发送有关 SQL 中数据库架构更改的电子邮件警报