实体框架代码首先添加正数约束

问题描述 投票:0回答:2

我只需要为正数(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 中的“未签名”。 谢谢你。

c# .net entity-framework code-first entity-framework-migrations
2个回答
11
投票

实体框架流畅配置当前不支持最小值或最大值设置,仅支持长度。

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

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

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

PS

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

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


1
投票

也许带有范围数据注释:

[Range(0.0, Double.MaxValue)]

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

© www.soinside.com 2019 - 2024. All rights reserved.