在执行“dotnet run”后,在IDE和控制台窗口中都从Mac上的Visual Studio Code中收到以下消息:

找不到类型或 namespace 名称“IndexAttribute”

我有一个名为Story的类,我想将其用于使用Code First生成数据库。此类具有一个标有KeyAttribute的主键和一个标有MaxLengthAttribute的Author字符串,因此两者都可以工作(使用System.ComponentModel.DataAnnotations)。另外两个字段DateTime Date和bool IsPublished已应用IndexAttribute(这是一个两列索引)。我将其明确命名为IX_DatePublished,IsUnique = false,并在日期字段中使用Order = 1,在IsPublished字段中使用Order = 2。

  • 在运行“dotnet restore”之前,我应在project.json中放入什么,以使其插入正确的东西以使IndexAttribute正常工作?
  • ASPCore1 for Mac / Linux附带的EF是否没有包含正确的 namespace ?

  • 谢谢!

    最佳答案

    自从您提出问题以来,情况似乎已经改变。 jsakamoto 已经实现了NuGet包,该包允许您保留[Index]属性。唯一的区别是变量的顺序。您不能再将Order=0作为最后一个变量,而是:

    [Index("IX_TreeFiddy", 0, IsUnique = false)]
    public string LochNessMonster { get; set; }
    
    [Index("IX_TreeFiddy", 1, IsUnique = false)]
    public int CentsGiven { get; set; }
    

    覆盖OnModelCreating()
    // Override "OnModelCreating"
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
    
        // .. and invoke "BuildIndexesFromAnnotations"!
        modelBuilder.BuildIndexesFromAnnotations();
    }
    

    这里是链接:IndexAttribute for .NET Core NuGet package

    10-05 23:50