У меня есть отношения «многие ко многим» между двумя объектами. Все работает нормально. Есть ли способ определить имена FK в промежуточной таблице (StoresPushNotifications)?Определите имена FK во многих отношениях.
Причина в том, что mysql не позволяет определять длинные имена ограничений. Он генерирует случайный FK в случае. Он прерывает миграцию, когда я пытаюсь установить переход на более ранний шаг.
[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; }
}
В моем файле контекста,
modelBuilder.Entity<StoreEntity>()
.HasMany<PushNotificationEntity>(s => s.PushNotifications)
.WithMany(c => c.Stores)
.Map(cs =>
{
cs.MapLeftKey("StoreId");
cs.MapRightKey("PushNotificationId");
cs.ToTable("StoresPushNotifications");
});
Да Питер, проблема вы упомянули также там. Но здесь это была длина FK. В этом случае, когда я вернусь к более ранней версии миграции, EF не смог найти FK в промежуточной таблице в БД. Причина в том, что имя FK в БД отличается от того, что EF ищет. Если я изменил имя таблицы «PushNotifications» на что-то вроде «PN», проблема исчезла. – sajith
и Peter для вашей проблемы. Следуйте этому, это решение прост. http://stackoverflow.com/a/27082231/443389. Спасибо – sajith
Спасибо, решение, которое я использовал, было два выше того, что было здесь связано - я думаю, ваше предложение выглядит лучше. –