#entity-framework #entity-framework-core #ef-fluent-api #ef-core-5.0
#entity-framework #entity-framework-core #ef-fluent-api #ef-core-5.0
Вопрос:
У меня есть класс с некоторыми свойствами, и я хочу определить ограничение на два свойства (тип int), чтобы одно из них было обязательным, но не оба. В SQL это будет выглядеть так:
ALTER TABLE <table_name>
ADD CONSTRAINT <constraint_name> CHECK
((<first_field> IS NOT NULL AND <second_field> IS NULL) OR
(<second_field> IS NOT NULL AND <first_field> IS NULL))
Возможно ли это с помощью FluentAPI?
Ответ №1:
Вы можете использовать HasCheckConstraint, например
modelBuilder.Entity<Customer>().Property(p => p.Name).HasColumnName("Name");
modelBuilder.Entity<Customer>().Property(p => p.Description).HasColumnName("Description");
modelBuilder.Entity<Customer>().HasCheckConstraint("ck_NameOrDescription", $"Name is not null or Description is not null");
Комментарии:
1. Чтобы получить именно то, что я хотел, я изменил на: $»Имя не равно нулю, а описание равно нулю или Описание не равно нулю, а имя равно нулю», спасибо.