【问题标题】:EF Core Data annotation Must be greater than an other fieldEF Core Data 注释必须大于其他字段
【发布时间】:2021-02-01 18:51:01
【问题描述】:

这是生成表格的模型类。

 public class Mission
{
    [Key]
    public string Id { get; set; }
    [Range(minimum: 1, maximum: int.MaxValue)]
    public int MinDayRate { get; set; }
    [Range(minimum: 1, maximum: int.MaxValue)]
    public int MaxDayRate { get; set; }
}

在 SQL Server 中是: ALTER TABLE 任务添加约束 CK_MaxDayRate_vs_MinDayRate 检查 (MinDayRate

如何创建数据注释 MaxDayRate 必须大于 MinDayRate 才能创建约束,如我的 sql server 示例中一样?

【问题讨论】:

标签: asp.net-core entity-framework-core ef-code-first data-annotations


【解决方案1】:

有一个数据注解[Compare]。但是,[Compare] 检查两个属性是否相等,而不是一个大于另一个。确实存在EFCore.CheckConstraints,它将各种 .NET 验证属性应用为数据库检查约束。

更好的方法是在 OnModelCreating 中使用确切的 SQL 定义任何检查约束:

modelBuilder.Entity<MyModel>()
    .HasCheckConstraint("CK_Properties_MinDayRate_MaxDayRate", "[MaxDayRate] > [MinDayRate]");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    相关资源
    最近更新 更多