实体框架的预留数据模型(代码优先)

时间:2016-04-29 19:48:08

标签: entity-framework ef-migrations datamodel

我可以使用帮助和建议如何创建我将在项目中使用的数据模型。

这是一个项目,我将创建一个酒店应用程序,您可以预订房间。

我想要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; }
} 

这就是我的模型现在的样子。不确定预订是否应该有PersonDetails的外键或其他方式(persondetails应该有bookingID作为外键)

我错过了哪些建议?

1 个答案:

答案 0 :(得分:1)

  

不确定预订是否应该有PersonDetails的外键或其他方式(persondetails应该将bookingID作为外键)

预订由一个人进行,一个人可以进行多次预订。那你的模型是正确的,因为:

  • PersonalDetails课程中使用导航属性Booking,我们可以知道是谁创建的。
  • 如果您需要了解与特定人员相关的所有预订,您还可以在ICollection<Booking>中添加收藏导航属性PersonalDetails