如何在ASP.NET Boilerplate中创建复合唯一键?

时间:2017-09-13 08:36:43

标签: aspnetboilerplate asp.net-boilerplate

我有一个以Id为主键的表格,我希望在CodeValue列上有一个复合唯一键。我正在这样做。

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

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

2 个答案:

答案 0 :(得分: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; }

字段。

答案 1 :(得分:1)

为他人添加解决方案。

不要修改任何内容只需添加以下行

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