基于 AutoFixture 代码的 EF 实体约束

AutoFixture code based EF entity constraints

Autofixture 是否能够根据使用 EF fluent 完成的映射配置创建实体 API?我正在更具体地查看配置了特定长度的字符串,但 Autofixutre 正在生成长度更长的字符串。

-- 更新问题 -- 让我们以一个 User 实体为例,其中 UserName 属性 的长度固定为 8 个字符。 UserName 属性 的配置是使用 EF Fluent API 完成的,如下所示:

modelBuilder.Entity<User>().Property(t => t.UserName).HasMaxLength(8);

现在,当我使用 Autofixture 实例化用户实体时,它会给我一个长度超过 8 的 UserName 字符串。这将在尝试将此实体保存到数据库中时触发异常。有很多配置不同的属性,这使我无法充分利用 Autofixture。

AutoFixture 对您的 ORM 一无所知。所以没有对 EF 配置的内置支持。它确实支持一些 System.ComponentModel.DataAnnotations 属性。

我猜 AutoFixture 只支持其中的 3 个:

  • StringLengthAttribute
  • 正则表达式属性
  • 范围属性

因此对于您的特定示例,您可以将 [StringLength] 添加到您的用户名 属性 而不是使用 Fluent API.

要获得更多支持,您需要一个可以读取您的 EF 配置并使用 EF 约束配置 AutoFixture 的扩展。在这个方向上有一些努力,但似乎比听起来更难。

看这里 - https://github.com/AutoFixture/AutoFixture/issues/162