列上的 DataAnnotation [Index(IsUnique = true)] 抛出错误属性 'Index' 在此声明类型上无效
DataAnnotation [Index(IsUnique = true)] on a column throws error Attribute 'Index' is not valid on this declaration type
这是我第一次探索 DataAnnotations(我希望能流畅地使用它)...我不明白为什么以下代码会引发编译时错误:
CS0592 - 属性 'Index' 在此声明类型上无效。仅在 'class' 声明
时有效
public class Holiday
{
[Key]
public int Id { get; set; }
[Required]
[Index(IsUnique = true)]
public DateTime? Date { get; set; }
public string Name { get; set; }
}
我的目标是使 Date
列独一无二...我认为在列上使用 [Index(IsUnique = true)]
是使其独一无二的正确方法...但它不允许我在列上使用 Index 属性,仅在 类...
请教我如何实现这个?
好吧,Index
attribute is the data annotation equivalent of HasIndex
流畅 API,与 API 相似,旨在应用于实体 (class) 级别,提供 构成索引的属性,依次,加上索引名称,是否唯一等其他信息
所以在你的情况下你需要这样的东西
[Index(nameof(Holiday.Date), IsUnique = true)]
public class Holiday
{
// ...
}
对应如下流利配置
modelBuilder.Entity<Holiday>()
.HasIndex(e => e.Date)
.IsUnique();
实际上,官方 EF Core 文档的 Indexes 部分中的示例很好地解释了所有这些内容。
这是我第一次探索 DataAnnotations(我希望能流畅地使用它)...我不明白为什么以下代码会引发编译时错误:
CS0592 - 属性 'Index' 在此声明类型上无效。仅在 'class' 声明
时有效public class Holiday
{
[Key]
public int Id { get; set; }
[Required]
[Index(IsUnique = true)]
public DateTime? Date { get; set; }
public string Name { get; set; }
}
我的目标是使 Date
列独一无二...我认为在列上使用 [Index(IsUnique = true)]
是使其独一无二的正确方法...但它不允许我在列上使用 Index 属性,仅在 类...
请教我如何实现这个?
好吧,Index
attribute is the data annotation equivalent of HasIndex
流畅 API,与 API 相似,旨在应用于实体 (class) 级别,提供 构成索引的属性,依次,加上索引名称,是否唯一等其他信息
所以在你的情况下你需要这样的东西
[Index(nameof(Holiday.Date), IsUnique = true)]
public class Holiday
{
// ...
}
对应如下流利配置
modelBuilder.Entity<Holiday>()
.HasIndex(e => e.Date)
.IsUnique();
实际上,官方 EF Core 文档的 Indexes 部分中的示例很好地解释了所有这些内容。