2017-09-13 96 views
0

我有一个表,其中的Id作为主键,我想在CodeValue列上有一个复合唯一键。我正在尝试这种方式。如何在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; } 

但它使复合主键不是唯一键。

回答

0

为他人添加解决方案。

不要做任何修改只是添加下面一行

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

试试这个:

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

    public virtual string Name { get; set; }  
} 

[DatabaseGenerated(DatabaseGeneratedOption.None)]将使数据库不创建的代码列。你实际需要的是重写Id并将其重命名为Code。

而且有一个复合键,只需添加

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

场。