Можно ли установить уникальное ограничение, используя First Framework Framework Code First?

Я хочу использовать ограничение Unique в таблице, и я использую Entity Framework Code-First.

Можно ли добавить уникальное ограничение с помощью EF 6, поскольку я верю в более ранние версии, это было невозможно.

Ответы

Ответ 1

Похоже, что функция уникального ограничения, которая должна была быть выпущена с версией 6, была нажата до 6.1.

С EF 6.1 вы можете определить ограничение, используя атрибут Index, как показано ниже:

[Index("IX_FirstAndSecond", 1, IsUnique = true)]
public int FirstColumn { get; set; }

[Index("IX_FirstAndSecond", 2, IsUnique = true)]
public int SecondColumn { get; set; }

ИЛИ

Вы можете использовать Fluent API, как показано здесь, в MSDN

Ответ 2

Скажем, что вы хотите добавить ограничение Unique только для одного атрибута, вы можете сделать следующее: начиная с EF6.1

[Index(IsUnique = true)]
public string Username { get; set; }

Если у вас несколько полей, связанных с одним и тем же индексом, вы будете использовать

Индексы с несколькими столбцами

Индексы, которые охватывают несколько столбцов, указанным с использованием одного и того же имени в нескольких аннотациях индекса для данная таблица. Когда вы создаете индексы с несколькими столбцами, вам нужно указать порядок столбцов в индексе. Например, следующий код создает индекс с несколькими столбцами по рейтингу и BlogId, называемый IX_BlogAndRating. BlogId - это первый столбец индекса и рейтинга является вторым.

public class Post 
{ 
    public int Id { get; set; } 
    public string Title { get; set; } 
    public string Content { get; set; } 
    [Index("IX_BlogIdAndRating", 2)] 
    public int Rating { get; set; } 
    [Index("IX_BlogIdAndRating", 1)] 
    public int BlogId { get; set; } 
}

Для получения дополнительной информации см. эту ссылку