【问题标题】:How to check automatically that I didn't forget to add ef core code first migration如何自动检查我没有忘记添加ef核心代码首先迁移
【发布时间】:2020-03-06 21:54:59
【问题描述】:

我们首先使用带有代码的 Entity Framework Core 2.2。有时我更改了其中一个实体,但忘记创建新迁移,或者我创建迁移但仅在一个上下文中(我们有不同的数据库引擎)。我想自动检查它(理想情况下作为 NUnit 测试),以便每次提交时它都在我们的 CI 服务器中运行。

我会手动尝试创建一个新的迁移并检查创建的 Up() 和 Down() 方法是否为空。作为 NUnit 测试有什么办法吗?

【问题讨论】:

    标签: c# .net-core entity-framework-core


    【解决方案1】:

    创建测试的难点在哪里:

    1. 创建一个新数据库
    2. 应用所有当前迁移来创建架构
    3. 尝试使用所有实体。它可以像添加实体、查询该实体并深入比较它们是否相同一样简单。
    4. 删除数据库

    如果架构没有新实体的迁移或实体的更改,您肯定会从中得到 SQL 错误。

    当然,每次创建新实体时,都需要添加新测试。但是,如果您使用的是 TDD,那应该已经发生了。

    而且速度也不应该成为问题,因为创建和删除数据库不应该超过几秒钟,而且不会有很多此类测试。它们可以并行化。

    如果你想变得花哨并且不想为每个实体编写测试,可以这样做:

    1. 使用反射获取 Context 支持的所有实体类型。
    2. 使用BogusAutoFixture 等自动数据生成器为实体填充数据。
    3. 通过 DB 往返实体。
    4. 使用深度比较器(如Compare-Net-Objects)将原始数据与检索到的数据进行比较。

    这种自动化方法的实用性取决于您的数据模型的复杂性。只适用于简单的模型。但如果模型很复杂,则需要进行大量调整和覆盖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      • 1970-01-01
      • 2016-05-26
      相关资源
      最近更新 更多