C# 缺少迁移的单元测试

C# 缺少迁移的单元测试,c#,entity-framework,.net-core,entity-framework-core,C#,Entity Framework,.net Core,Entity Framework Core,您能否编写一个单元测试来验证是否生成了所有迁移脚本 我想实现这一点,这样当有人忘记添加迁移时,CI构建就会失败。但是内存数据库中的ef核心不允许任何“关系特定”的东西,SqLite数据库失败是因为“没有这样的表:_EFMigrationsHistory”,这似乎是一个无法修复的问题 我还查看了生成的快照,如果有任何方法可以将其与我当前的代码库进行比较,但没有发现任何有用的东西 此测试应该是轻量级的,并且在没有实际数据库的情况下运行。一种黑客解决方案将比较运行dotnet ef Migration

您能否编写一个单元测试来验证是否生成了所有迁移脚本

我想实现这一点,这样当有人忘记添加迁移时,CI构建就会失败。但是内存数据库中的ef核心不允许任何“关系特定”的东西,SqLite数据库失败是因为“没有这样的表:_EFMigrationsHistory”,这似乎是一个无法修复的问题

我还查看了生成的快照,如果有任何方法可以将其与我当前的代码库进行比较,但没有发现任何有用的东西


此测试应该是轻量级的,并且在没有实际数据库的情况下运行。

一种黑客解决方案将比较运行
dotnet ef Migrations add
前后的
迁移/*Snapshot.cs

我认为这是可行的:

before="$(sha256sum Migrations/*Snapshot.cs | sha256sum)"
dotnet ef migrations add dummy
after="$(sha256sum Migrations/*Snapshot.cs | sha256sum)"
if [ "$before" != "$after" ]; then
    exit 1
fi

一种黑客解决方案是比较运行
dotnet ef Migrations add
前后的
Migrations/*Snapshot.cs

我认为这是可行的:

before="$(sha256sum Migrations/*Snapshot.cs | sha256sum)"
dotnet ef migrations add dummy
after="$(sha256sum Migrations/*Snapshot.cs | sha256sum)"
if [ "$before" != "$after" ]; then
    exit 1
fi