Я использую ASP.NET MVC 4 Entity Framework 5 для генерации первого переноса кода для структуры базы данных нижеприведенных классов, имеющих отношения между ними. Однако я столкнулся с проблемой, где он вызывает эту ошибку, когда я пытаюсь обновить свою базу данных из миграции:База данных, вызывающая «циклы» или «несколько каскадных путей»
Paste Bin файла миграции можно найти здесь: вернуласьhttp://pastebin.com/ngXacrKV
Ошибка:
Introducing FOREIGN KEY constraint 'FK_dbo.Bookings_dbo.Rooms_RoomId' on table 'Bookings' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint. See previous errors.
Bunk.cs
public class Bunk
{
[Key]
public int BunkId { get; set; }
public BunkStatus BunkStatus { get; set; }
[ForeignKey("Room")]
public int RoomId { get; set; }
public virtual Room Room { get; set; }
// Added for convenience
public virtual ICollection<Booking> Bookings { get; set; }
}
Room.cs
public class Room
{
[Key]
public int RoomId { get; set; }
public string RoomName { get; set; }
public Gender RoomGender { get; set; }
public RoomStatus RoomStatus { get; set; }
public virtual ICollection<Bunk> Bunks { get; set; }
// Added for convenience
public virtual ICollection<Booking> Bookings { get; set; }
}
Bookings.cs
public class Booking
{
[Key]
public int BookingId { get; set; }
//[ForeignKey("UserProfile")]
//public int UserProfileId { get; set; }
//public UserProfile UserProfile { get; set; }
[ForeignKey("Bunk")]
public int BunkId { get; set; }
public Bunk Bunk { get; set; }
public int Duration { get; set; }
[ForeignKey("Preferred_Room")]
public int RoomId { get; set; }
public Room Preferred_Room { get; set; }
public Decimal Price { get; set; }
public BookingStatus BookingStatus { get; set; }
}
Что бы лучшая работа вокруг будет удалить эту проблему, не вызывая слишком много помех к исходной структуре класса , Я не слишком беспокоюсь о добавлении новых таблиц объединения, пока я все еще могу получить доступ к коду в режиме Lazy загрузки в моделях моих контроллеров/представлений.
Извините, я не уверен, куда это пойдет, будет ли это проходить в моем классе DatabaseContext, который наследуется от 'DbContext'? - Я очень новичок в ASP MVC, и я делаю этот проект для университетского модуля, к сожалению, мои истории в других технологиях :( –
Если так, мой класс «DatabaseContext» содержит только «public DbSet Rooms {get; set;} public DbSet Bunks {get; set;} Публичный DbSet Заказы {get; set;} 'и я все еще немного смущен, как бы это связано с этим? –
Также я должен указать: если бронирование, комната или койка удаляется. Я не хочу, чтобы любые другие объекты были удалены вместе с ними, они просто будут перераспределены в другой объект. –