Код 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 6

2 ответа:

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

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

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

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

PS

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

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

Может быть, с диапазоном Dataannotation:

[Range(0.0, Double.MaxValue)]

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