asp.net-core - EF Core Data 注释必须大于其他字段
问题描述
这是生成表格的模型类。
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 Mission ADD CONSTRAINT CK_MaxDayRate_vs_MinDayRate CHECK (MinDayRate <= MaxDayRate );
如何创建数据注释 MaxDayRate 必须大于 MinDayRate ,这将像我的 sql server 示例一样创建约束?
解决方案
有一个数据注释
[Compare]
。但是,[Compare]
检查两个属性是否相等,而不是一个大于另一个。确实存在EFCore.CheckConstraints,它将各种 .NET 验证属性应用为数据库检查约束。
更好的方法是使用 OnModelCreating 中的确切 SQL 定义任何检查约束:
modelBuilder.Entity<MyModel>()
.HasCheckConstraint("CK_Properties_MinDayRate_MaxDayRate", "[MaxDayRate] > [MinDayRate]");
推荐阅读
- python - 如何在face_recognition python库中获取人脸匹配百分比而不是布尔值
- powershell - 可以做些什么来让 SecurityProtocol 工作,我得到“无法建立 SSL 连接”?
- sql - 使用 Hibernate 的 Spring 导入 SQL
- google-apps-script - 从电子表格创建新电子表格
- c# - C# 根据 number 属性创建具有无限子节点的 XML
- php - Webapp (JavaScript) 和 iOS-App (Swift) 中的 RSA 加密和解密
- javascript - 如何更改 D3 图表中 Y 轴的宽度?
- qt - 按下时更改 QFrame 框颜色和边框
- java - setOnCheckedChangeListener 方法在 JAVA 中是如何工作的?
- excel - 我想使用 excel 替换 url /abcd ..... 中的所有最后一个斜杠