C# 对具有实体框架核心的属性所允许的值添加约束

C# 对具有实体框架核心的属性所允许的值添加约束,c#,.net,entity-framework,entity-framework-core,C#,.net,Entity Framework,Entity Framework Core,使用EntityFramework Core,如何使用modelBuilder将属性限制为某些值 在SQL中,它是: CONSTRAINT chk_Frequency CHECK (Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly')) 谢谢,您可以使用枚举 List<string> str = new List<string>(){"Daily", "Weekly", "Monthly", "Yearly'} p

使用EntityFramework Core,如何使用modelBuilder将属性限制为某些值

在SQL中,它是:

CONSTRAINT chk_Frequency CHECK (Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly'))
谢谢,

您可以使用枚举

List<string> str = new List<string>(){"Daily", "Weekly", "Monthly", "Yearly'}
public enum Frequency
{
    Daily,
    Weekly,
    Monthly,
    Yearly
}
然后将EF核心值转换与EnumToStringConverter一起使用。这将有助于:

modelBuilder
   .Entity<Rider>()
   .Property(e => e.Mount)
   .HasConversion<string>();
modelBuilder
.实体()
.Property(e=>e.Mount)
.HasConversion();

它不会在数据库中创建约束,但会将枚举类型放在映射属性上。如果数据库中出现错误值,它将映射到枚举的默认值。

“它不会创建约束”,这很奇怪。。。5.0.0-预发布,对我来说,它确实。。。但在5.0.1中,它删除了约束。试图找出原因。
modelBuilder
   .Entity<Rider>()
   .Property(e => e.Mount)
   .HasConversion<string>();