Entity Framework 代码首先为正数添加约束

Entity Framework code first add constraint for positive numbers

我只需要为正数 (0-...) 添加约束并将数字限制为 (...-1)。

CreateTable(
   "dbo.Drinks",
   c => new
   {
       Id = c.Int(nullable: false, identity: true),
       Name = c.String(),
       ImageUrl = c.String(),
       Price = c.Int(nullable: false),
       Count = c.Int(nullable: false)
   })
   .PrimaryKey(t => t.Id);
   //.Constraint ???

类似于 MS SQL 中的 'unsigned'。 谢谢。

可能带有范围数据注释:

[Range(0.0, Double.MaxValue)]

只有大于 0 的值才是您要查找的值,不是吗?

Entity Framework Fluent 配置当前不支持最小值或最大值设置,仅支持长度。

不过,您可以通过注释实现这样的验证:

[Range(1, int.MaxValue, ...)]
int YourInt{ get; set; }

但这只会在保存期间进行验证,而不会像流畅配置/迁移那样将实际约束添加到数据库中。

PS

我喜欢 Entity Framework 迁移,但我只在开发过程中使用它直到第一次发布。在您实际运送产品之前,这可以节省大量时间。之后,我通常会自己微调数据库,包括索引和约束,并完全放弃使用 EF 迁移。

数据库应该在生产中进行临床调整,因为它们通常是性能和优化中最(如果不是最)重要的因素之一。不幸的是,EF 迁移并没有为您提供所需的全部灵活性,即使它涵盖了最重要的用例。