gpt4 book ai didi

c# - 不能在表上创建多个聚集索引

转载 作者:行者123 更新时间:2023-12-03 17:01:08 24 4
gpt4 key购买 nike

键入 update-database 后出现以下错误:

Cannot create more than one clustered index on table 'dbo.AppUsers'. Drop the existing clustered index 'PK_dbo.AppUsers' before creating another.



我正在开发 Azure 移动服务。

我有三个数据模型:
public class AppUser : EntityData
{
public string Username { get; set; }
public virtual ICollection<RatingItem> userRatings { get; set; }
}

public class PlaceItem : EntityData
{
public string PlaceName { get; set; }
public int Group { get; set; }
public string XCoordinate { get; set; }
public string YCoordinate { get; set; }
}

public class RatingItem : EntityData
{
public int Ratings { get; set; }
public string PlaceId { get; set; }
public AppUser user { get; set; }
}

它与迁移有关,因为:
  • 初始创建位于 _迁移历史表,但不在解决方案资源管理器的迁移文件夹中。
  • 当我添加迁移 AddAll 时,我没有收到任何错误,并且 AddAll 出现在迁移文件夹中,但不在表中。

  • 在上下文文件中:
    public class ICbackendContext : DbContext
    {
    public DbSet<AppUser> AppUsers { get; set; }
    public DbSet<PlaceItem> PlaceItems { get; set; }
    public DbSet<RatingItem> RatingItems { get; set; }

    }

    最佳答案

    通常,此错误消息是由未运行移动应用程序/移动服务数据库生成器引起的。 Entity Framework 没有用于创建非主键的聚集索引的注释,因此移动服务器 SDK 手动创建正确的 SQL 语句来设置 CreatedAt作为非主键聚集索引。

    要解决此问题,请在应用迁移之前运行数据库生成器。在 Migrations\Configuration.cs文件,包括以下内容:

    public Configuration()
    {
    AutomaticMigrationsEnabled = false;
    SetSqlGenerator("System.Data.SqlClient", new EntityTableSqlGenerator());
    }

    要了解更多信息,请参阅 How to make data model changes to a .NET backend mobile service .本主题适用于 两者 移动服务和移动应用,尽管移动应用中的一些命名空间是不同的。

    关于c# - 不能在表上创建多个聚集索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36209008/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com