Модель данных резервирования для Entity Framework (сначала код)

Я мог бы воспользоваться помощью и советом, как мне создать свою модель данных, которую я собираюсь использовать в своем проекте.

Это проект, в котором я собираюсь создать гостиничное приложение, в котором вы сможете забронировать номер.

Я хочу 3 класса моделей:

  • BookingModel (содержит все созданные бронирования)
  • RoomModel (содержит все комнаты)
  • PersonDetailsModel (лицо, заказавшее бронирование)

Я немного не уверен, какой должна быть моя модель данных... я сделал эти термины, о которых думал.

  • В бронировании может быть от 1 до нескольких номеров.
  • Номер можно бронировать много раз, но в разные дни.
  • Бронирование может быть забронировано одним человеком.

Я предполагаю, что у нас есть отношение многие ко многим между бронированием и номером? И много к 1 между бронированием и человеком?

Код (Модели):

public class Booking
{
    public int BookingID{ get; set; }
    public string BookingNumber{ get; set; }
    public DateTime CheckInDate { get; set; }
    public DateTime CheckOutDate { get; set; }
    public int PersonDetailsID { get; set; }

    public virtual PersonsDetails PersonsDetails { get; set; }
    public virtual ICollection<Room> Rooms { get; set; }
} 

public class PersonDetails
{
    public int PersonDetailsID{ get; set; }
    public string FirstName{ get; set; }
    public string LastName{ get; set; }
} 

public class Room
{
    public int RoomID{ get; set; }
    public string RoomNumber{ get; set; }

    public virtual ICollection<Booking> Bookings{ get; set; }
} 

Вот так сейчас выглядят мои модели. Не уверен, должен ли Booking иметь внешний ключ для PersonDetails или наоборот (persondetails должен иметь bookingID в качестве внешнего ключа)

Какие предложения я пропустил?


person Pixel    schedule 29.04.2016    source источник
comment
ты видел мой ответ.   -  person CodeNotFound    schedule 05.05.2016


Ответы (1)


Не уверен, должен ли Booking иметь внешний ключ для PersonDetails или наоборот (persondetails должен иметь bookingID в качестве внешнего ключа)

Бронирование производится одним человеком, и человек может сделать несколько бронирований. Тогда ваша модель верна, потому что:

  • с навигационным свойством PersonalDetailsна Booking классе мы можем узнать, кто это сделал.
  • вы также можете добавить навигационное свойство коллекции ICollection<Booking> в PersonalDetails, если вам нужно знать все бронирования, связанные с конкретным человеком.
person CodeNotFound    schedule 29.04.2016