我有一个以Id为主键的表格,我希望在Code
和Value
列上有一个复合唯一键。我正在这样做。
[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 :(得分: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();
});