GAC*_*GAC 6 c# data-annotations ef-code-first entity-framework-core
这是我第一次探索 DataAnnotations(我希望能够流畅地使用它)...并且我不明白为什么以下代码会引发编译时错误:
CS0592 - 属性“索引”在此声明类型上无效。它仅对“类”声明有效
public class Holiday
{
[Key]
public int Id { get; set; }
[Required]
[Index(IsUnique = true)]
public DateTime? Date { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的目标是使Date列唯一...我认为[Index(IsUnique = true)]在列上使用是使其唯一的正确方法...但它不允许我在列上使用 Index 属性,只能在类上使用...
请教我如何实现这一目标?
Iva*_*oev 16
嗯,Index属性是相当于 Fluent API 的数据注释HasIndex,与 API 类似,旨在应用于实体(类)级别,按顺序提供构成索引的属性,以及索引名称等其他信息,是否独特等等。
所以在你的情况下你需要这样的东西
[Index(nameof(Holiday.Date), IsUnique = true)]
public class Holiday
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
对应下面的流畅配置
modelBuilder.Entity<Holiday>()
.HasIndex(e => e.Date)
.IsUnique();
Run Code Online (Sandbox Code Playgroud)
实际上, EF Core 官方文档的索引部分中的示例对此进行了很好的解释。
| 归档时间: |
|
| 查看次数: |
7122 次 |
| 最近记录: |