🔥 EF Core migrations - это компилятор схемы базы, а не кнопка «создать таблицу»
Опытный C#-разработчик не оставляет бизнес-инварианты только внутри SaveChangesAsync().
Проверку в приложении можно обойти прямым SQL, импортом данных, фоновым процессом или второй версией сервиса. Поэтому правила, нарушение которых делает данные некорректными, стоит закреплять в самой базе.
public sealed class ProductConfiguration
: IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.ToTable("Products", table =>
{
table.HasCheckConstraint(
"CK_Products_Price_Range",
"[Price] > 0 AND [Price]
Опытный C#-разработчик не оставляет бизнес-инварианты только внутри SaveChangesAsync().
Проверку в приложении можно обойти прямым SQL, импортом данных, фоновым процессом или второй версией сервиса. Поэтому правила, нарушение которых делает данные некорректными, стоит закреплять в самой базе.
public sealed class ProductConfiguration
: IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.ToTable("Products", table =>
{
table.HasCheckConstraint(
"CK_Products_Price_Range",
"[Price] > 0 AND [Price]