1

我有一个以 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; }

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

4

2 回答 2

2

为他人添加解决方案。

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

modelBuilder.Entity<Test>(b =>
        {
            b.HasIndex(e => new { e.Code, e.Value}).IsUnique();
        });
于 2017-09-26T09:19:30.947 回答
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; }

场地。

于 2017-09-13T11:52:18.073 回答