EF Fluent Api 可以设置最小长度吗?
Does the EF Fluent Api can setting the Minimum Length?
似乎使用 Fluent API 更灵活。
所以我选择的方式是遵循始终使用 Fluent API 来确定它在 db 中具有的功能,而不是使用注释来。
但问题来了,我找不到设置最小长度的方法。
有执行此操作的方法吗?
而且我注意到,没有太多话题讨论这种 way.Is 流利 API 方式流行??
希望我们选对了。
目前使用 EF 无法做到这一点。如果你真的必须设置最小长度,你可以用一个属性来完成:
[MaxLength(10),MinLength(3)]
public string MyProperty {get; set;}
正如你问题下的第一条评论所说,在数据库中进行最小长度检查可能不是很常见(我自己从未见过),所以当你尝试输入一个值时,这只会抛出一个验证错误长度小于 3.
对于字符串 属性 使用 StringLength
[StringLength(30, MinimumLength = 5)]
public string MyStringProperty { get; set; }
也许这个问题回复晚了还是没办法指定使用 Fluent API。
但是我们可以使用 Fluent API 从检查约束来确保数据长度大于某个长度。
builder.HasCheckConstraint("CHK_DocumentLogo_ExtensionHasAtleastOneChar", "(DATALENGTH([Extension]) > 0)");
您需要安装 Microsoft.EntityFrameworkCore.Relational NuGet 包才能使用此扩展方法。
有关 HasCheckConstraint 的更多信息 - https://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.relationalentitytypebuilderextensions.hascheckconstraint?view=efcore-5.0
似乎使用 Fluent API 更灵活。
所以我选择的方式是遵循始终使用 Fluent API 来确定它在 db 中具有的功能,而不是使用注释来。
但问题来了,我找不到设置最小长度的方法。 有执行此操作的方法吗?
而且我注意到,没有太多话题讨论这种 way.Is 流利 API 方式流行??
希望我们选对了。
目前使用 EF 无法做到这一点。如果你真的必须设置最小长度,你可以用一个属性来完成:
[MaxLength(10),MinLength(3)]
public string MyProperty {get; set;}
正如你问题下的第一条评论所说,在数据库中进行最小长度检查可能不是很常见(我自己从未见过),所以当你尝试输入一个值时,这只会抛出一个验证错误长度小于 3.
对于字符串 属性 使用 StringLength
[StringLength(30, MinimumLength = 5)]
public string MyStringProperty { get; set; }
也许这个问题回复晚了还是没办法指定使用 Fluent API。
但是我们可以使用 Fluent API 从检查约束来确保数据长度大于某个长度。
builder.HasCheckConstraint("CHK_DocumentLogo_ExtensionHasAtleastOneChar", "(DATALENGTH([Extension]) > 0)");
您需要安装 Microsoft.EntityFrameworkCore.Relational NuGet 包才能使用此扩展方法。
有关 HasCheckConstraint 的更多信息 - https://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.relationalentitytypebuilderextensions.hascheckconstraint?view=efcore-5.0