Ich habe eine Viele-zu-Viele-Beziehung zwischen zwei Entitäten. Alles funktioniert gut. Gibt es eine Möglichkeit, Namen von FKs in der Zwischentabelle (StoresPushNotifications) zu definieren?Definieren Sie FK-Namen in einer Viele-zu-Viele-Beziehung.
Der Grund zu fragen ist, dass mysql nicht erlauben, lange Constraint-Namen zu definieren. Es erzeugt zufällige FK für den Fall. Es bricht die Migration ab, wenn ich versuche, die Migration auf einen früheren Schritt zu setzen.
[Table("Stores")]
public class StoreEntity
{
[Key]
public int Id { get; set; }
public virtual ICollection<PushNotificationEntity> PushNotifications { get; set; }
}
[Table("PushNotifications")]
public class PushNotificationEntity
{
[Key]
public int Id { get; set; }
public ICollection<StoreEntity> Stores { get; set; }
}
In meiner Kontext-Datei hatte
modelBuilder.Entity<StoreEntity>()
.HasMany<PushNotificationEntity>(s => s.PushNotifications)
.WithMany(c => c.Stores)
.Map(cs =>
{
cs.MapLeftKey("StoreId");
cs.MapRightKey("PushNotificationId");
cs.ToTable("StoresPushNotifications");
});
Ja Peter zu begrenzen, ist das Problem, das Sie erwähnt auch dort. Aber hier war es FK Länge. In diesem Fall, wenn ich auf die frühere Migrationsversion zurückwechsle, konnte EF den FK in der Zwischentabelle in der Datenbank nicht finden. Der Grund dafür ist, dass der Name des FK in der DB anders ist als der, den EF gesucht hat. Wenn ich "PushNotifications" Tabellenname in etwas wie "PN" ändere, ist das Problem weg. – sajith
und Peter für Ihr Problem, folgen Sie dieser, diese Lösung ist unkompliziert. http://stackoverflow.com/a/27082231/443389. Danke, – sajith
Danke, die Lösung, die ich verwendet habe, war zwei über dem hier verlinkten - ich denke, dass Ihr Vorschlag besser aussieht. –