Уникальные поля EF Core 2.1

168
10 марта 2019, 13:40

Есть база данных с двумя таблицами: Users и Followers. Для доступам к данным используется EF Core 2.1, модели данных представлены ниже

public class Follower
{
    public int Id{get;set;}
    public User CurrentUser{get;set;}
    public int CurrentUserId{get;set;}
    public User PickedUser{get;set;}
    public int PickedUserId{get;set;}
}    
public class User
{
    public int Id{get;set;}
    public virtual ICollection<Follower> Following { get; set;}
    public virtual ICollection<Follower> Followers  {get;set;}
}

При создании модели используется следующая конфигурация

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<User>().HasKey(u => u.Id);
    modelBuilder.Entity<Follower>().HasKey(u => u.Id);
    modelBuilder.Entity<Follower>().HasOne(s=>s.CurrentUser).WithMany(u=>u.Following).HasForeignKey(s=>s.CurrentUserId).HasPrincipalKey(u=>u.Id);
    modelBuilder.Entity<Follower>().HasOne(s=>s.PickedUser).WithMany(u=>u.Followers).HasForeignKey(s=>s.PickedUserId).HasPrincipalKey(u=>u.Id);
}

Список подписчиков работает, но с одним нареканием: можно подписаться несколько раз

При попытке сделать поле уникальным через HasIndex() выбрасывается исключение.

modelBuilder.Entity<Follower>().HasIndex(f => new {f.CurrentUser , f.PickedUser}).IsUnique();

Вопрос: Как сделать комбинацию внешних ключей уникальной?

READ ALSO
Visual Studio 2017 не работает режим отладки

Visual Studio 2017 не работает режим отладки

Проблема в следующемПри запуске проекта через

226
ajax и элементы с одинаковым классом

ajax и элементы с одинаковым классом

Есть несколько блоков с одинаковым классом, по тыку срабатывает функция, которая сравнивает текст блока с полем из таблицы в бд, и после выборки...

168
Всплывающее уведомление

Всплывающее уведомление

У меня есть кнопка, на которой вести функция: <div class="btn btn-v-1" style="margin-top:30px" type="text" onclick='SaveCountry();'>Upload</div> Как сделать, чтоб если функция отработала...

125
как сравнить текущую строку и ту, которая появляется на ее месте при ajax запросе

как сравнить текущую строку и ту, которая появляется на ее месте при ajax запросе

как сравнить текущую строку и ту, которая появляется на ее месте при ajax запросеВ частности я хочу реализовать такой механизм, который будет...

154