如何在 ASP.NET 样板中制作复合唯一键?

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

我有一个以 Id 作为主键的 table,我想在 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; }

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

试试这个:

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

字段。

为其他人添加解决方案。

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

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