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

时间:2016-12-29 14:39:07

标签: c# .net entity-framework code-first ef-migrations

我只需要为正数(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'之类的东西。 谢谢。

2 个答案:

答案 0 :(得分:6)

实体框架流畅的配置目前不支持最小值或最大值设置,只是长度。

但是,你可以通过注释实现这样的验证:

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

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

<强> PS

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

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

答案 1 :(得分:1)

可能使用Range Dataannotation:

[Range(0.0, Double.MaxValue)]

只有超过0的值才是您要找的,不是吗?