使用EF Code First的ASP.NET MVC 3预订系统

时间:2012-12-13 08:08:25

标签: asp.net-mvc-3

您好我对预订方案有疑问。我希望会员能够租一部或多部电影。我的问题是我应该如何构建它,以便在租借时不能租用同一部电影。我应该在Renting类中使用名为Avaliable的变量作为bolean值吗? THX

public class Member
{
    public virtual int MemberId { get; set; }
    public virtual int Name { get; set; }
    public virtual List<Rental> Rentals { get; set; }
}
 public class Movie
{
    public virtual int MovieId { get; set; }
    public virtual string Name { get; set; }
}
 public class Renting
{
    public virtual int RentalId { get; set; }
    public virtual int MovieId { get; set; }
    public virtual Movie Movie { get; set; }
    public virtual int MemberId { get; set; }
    public virtual Member Member { get; set; }

    public DateTime startDate { get; set; }
    public DateTime endDate { get; set; }
    public DateTime dueDate { get; set; }

}

1 个答案:

答案 0 :(得分:1)

嗯,你可以用不同的方式解决问题:

解决方案#1 - 或者在类Movie上添加一个标志&gt;公共虚拟Bool IsOnStock {get; set;}当你想要显示可用的电影让其他成员预订时,你只需要选择movies.where(x =&gt; x.IsOnStock)简单的解决方案,但保持在任何时候租赁的“状态”改变时,记住更新这个字段......否则它将无法工作。但我认为这是一个好主意,因为当有人租一部电影并说它会在2天内归还它时,也许这种情况不会发生,你只会在真正发生的时候改变那面旗帜。

解决方案#2-现在,您可以通过访问租借条目来开始“过滤”,而不是拥有新的“属性”,同时考虑“租用条目”中的“DateTime.Now”和日期字段。做这样的事情:选择电影列表中没有ID的所有电影,其中有一个条目,其中“DateTime.Now”在租赁日期之间。

如果您有同一部电影的多个副本等,还有更多解决方案。但为了保持简单,只需使用上述解决方案之一。