2017-09-13 3 views
0

J'ai une table qui a l'ID comme clé primaire, je veux avoir une clé unique composite sur Code et colonne Value. J'essaye de cette façon.Comment faire une clé unique composite dans ASP.NET Boilerplate?

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

Mais cela fait que la clé primaire composite n'est pas une clé unique.

Répondre

0

Ajout de solution pour d'autres.

Ne pas modifier quoi que ce soit juste ajouter la ligne ci-dessous

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

Essayez ceci:

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

    public virtual string Name { get; set; }  
} 

[DatabaseGenerated(DatabaseGeneratedOption.None)] fera la base de données pour ne pas créer la colonne Code. Ce dont vous avez besoin en réalité, c'est de remplacer l'Id et de le renommer en Code.

et d'avoir une clé composite, il suffit d'ajouter

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

.