Я не могу найти способ добавить уникальное ограничение к моему полю с помощью атрибута:
public class User
{
[Required]
public int Id { get; set; }
[Required]
// [Index("IX_FirstAndSecond", 2, IsUnique = true)] not supported by core
public string Email { get; set; }
[Required]
public string Password { get; set; }
}
Я использую эти пакеты:
"Microsoft.EntityFrameworkCore": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.1",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
Ответы:
В ядре EF вы не можете создавать индексы с помощью аннотаций данных. Но вы можете сделать это с помощью Fluent API.
Вот так внутри
{Db}Context.cs
:... или если вы используете перегрузку с buildAction:
Вы можете прочитать больше об этом здесь: Индексы
источник
HasAlternateKey
Также, если вы хотите создать уникальные ограничения для нескольких столбцов, вы можете просто сделать это (по ссылке @ Sampath )
источник
Решение для EF Core
Таблица БД будет выглядеть так:
Ссылка на документацию EF Core
источник
If you just want to enforce uniqueness of a column then you want a unique index rather than an alternate key. In EF, alternate keys provide greater functionality than unique indexes because they can be used as the target of a foreign key.
ОП спрашивает, возможно ли добавить атрибут в класс сущности для уникального ключа. Короткий ответ: это возможно, но не из коробки от EF Core Team. Если вы хотите использовать атрибут для добавления уникальных ключей в ваши классы сущностей Entity Framework Core, вы можете сделать то, что я разместил здесь
источник
Для кого-то, кто пробует все эти решения, но не работает, попробуйте этот, он работал для меня
источник
Чтобы использовать его в ядре EF через конфигурацию модели
источник
Ни один из этих методов не работал для меня в .NET Core 2.2, но я смог адаптировать некоторый код для определения другого первичного ключа для работы с этой целью.
В приведенном ниже примере я хочу убедиться, что поле OutletRef уникально:
Это добавляет необходимый уникальный индекс в базу данных. Чего он не делает, так это предоставит возможность указать пользовательское сообщение об ошибке.
источник
Мы можем добавить уникальный индекс ключа, используя свободный API. Ниже код работал для меня
источник
Ef Core поддерживает несколько уникальных ключей
Не забудьте запустить команду ef core, чтобы выполнить миграцию и обновить базу данных.
источник