Как сделать составной уникальный ключ в ASP.NET Boilerplate?

У меня есть таблица с идентификатором в качестве первичного ключа, я хочу иметь составной уникальный ключ для столбцов Code и Value. Я так стараюсь.

[Table("Test")]

public class Test: FullAuditedEntity

{


[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public virtual int Code { get; set; }

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public virtual int Value { get; set; }

Но это делает составной первичный ключ не уникальным.


person vivek nuna    schedule 13.09.2017    source источник


Ответы (2)


Добавление решения для других.

Ничего не изменяйте, просто добавьте строку ниже

modelBuilder.Entity<Test>(b =>
        {
            b.HasIndex(e => new { e.Code, e.Value}).IsUnique();
        });
person vivek nuna    schedule 26.09.2017

Попробуй это:

public class SomeClass : Entity<int>
{
    [Column("Code")]
    public override int Id {get; set;}

    public virtual string Name { get; set; }    
}

[DatabaseGenerated(DatabaseGeneratedOption.None)] заставит базу данных НЕ создавать столбец кода. На самом деле вам нужно переопределить идентификатор и переименовать его в Код.

А чтобы получить составной ключ, просто добавьте

[Key]
public virtual int Value { get; set; }

поле.

person Sleek    schedule 13.09.2017