基于 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 的扩展。在这个方向上有一些努力,但似乎比听起来更难。
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 的扩展。在这个方向上有一些努力,但似乎比听起来更难。