Код Entity Framework сначала добавляет ограничение для положительных чисел

Мне нужно добавить ограничение только для положительных чисел (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 ???

что-то вроде "unsigned" в MS SQL. Спасибо.

2 ответов


конфигурация Entity Framework fluent в настоящее время не поддерживает параметры min или max, только length.

вы можете, однако, реализовать проверку, как это, через аннотации:

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

но это приведет только к проверке во время сохранения, а не к фактическому ограничению, добавляемому в базу данных, как это было бы с плавной конфигурацией / миграцией.

PS

Я люблю миграции Entity Framework, но я использую только его во время разработки до первого релиза. Это огромная экономия времени, пока вы не отправите свой продукт. После этого я обычно сам настраиваю базу данных, включая индексы и ограничения, и вообще отбрасываю использование миграции EF.

базы данных должны быть клинически скорректированы в производстве, потому что они обычно являются одним из наиболее (если не самым) важных факторов производительности и оптимизации. И unfurtunately эф миграции не дают вам необходимую гибкость, даже хотя она охватывает наиболее важные случаи использования.


возможно, с диапазоном Dataannotation:

[Range(0.0, Double.MaxValue)]

только значения больше 0-это то, что вы ищете, не так ли?