Nach der Eingabe der Update-Datenbank tritt der folgende Fehler auf:
Es kann nicht mehr als ein Clustered-Index für die Tabelle 'dbo.AppUsers' erstellt werden. Löschen Sie den vorhandenen Clustered-Index 'PK_dbo.AppUsers', bevor Sie einen anderen erstellen.
Ich arbeite an einem mobilen Azure-Dienst.
Ich habe drei Datenmodelle:
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; }
}
Es hat mit Migration zu tun, weil:
In der Kontextdatei:
public class ICbackendContext : DbContext
{
public DbSet<AppUser> AppUsers { get; set; }
public DbSet<PlaceItem> PlaceItems { get; set; }
public DbSet<RatingItem> RatingItems { get; set; }
}}
Im Allgemeinen wird diese Fehlermeldung dadurch verursacht, dass der DB-Generator für mobile Apps / Mobile Services nicht ausgeführt wird. Entity Framework verfügt nicht über eine Anmerkung zum Erstellen eines Clustered-Index, der kein Primärschlüssel ist. Daher erstellt das SDK des mobilen Servers manuell die richtigen SQL-Anweisungen, die CreatedAt
als Clustered-Index für Nicht-Primärschlüssel festgelegt werden sollen.
Um dies zu beheben, führen Sie den Datenbankgenerator aus, bevor Migrationen angewendet werden. Fügen Sie der Migrations\Configuration.cs
Datei Folgendes hinzu:
public Configuration()
{
AutomaticMigrationsEnabled = false;
SetSqlGenerator("System.Data.SqlClient", new EntityTableSqlGenerator());
}
Weitere Informationen finden Sie unter Ändern von Datenmodellen an einem mobilen .NET-Backend-Dienst . Das Thema gilt sowohl für Mobile Services als auch für Mobile Apps, obwohl sich einige Namespaces in Mobile Apps unterscheiden.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen