How to make composite unique key in ASP.NET Boilerplate?

2.4k Views Asked by At

I have a table which has the Id as primary key, I want to have a composite unique key on Code and Value column. I'm trying in this way.

[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; }

But it's making the composite primary key not unique key.

2

There are 2 best solutions below

0
On BEST ANSWER

Adding solution for others.

Don't modify anything just add the below line

modelBuilder.Entity<Test>(b =>
        {
            b.HasIndex(e => new { e.Code, e.Value}).IsUnique();
        });
0
On

Try this:

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

    public virtual string Name { get; set; }    
}

[DatabaseGenerated(DatabaseGeneratedOption.None)] will make the Database to NOT create the Code column. What you need in reality is to override the Id and rename it to Code.

And to have a composite key, simply add

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

field.