您好我对预订方案有疑问。我希望会员能够租一部或多部电影。我的问题是我应该如何构建它,以便在租借时不能租用同一部电影。我应该在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; }
}
答案 0 :(得分:1)
嗯,你可以用不同的方式解决问题:
解决方案#1 - 或者在类Movie上添加一个标志&gt;公共虚拟Bool IsOnStock {get; set;}当你想要显示可用的电影让其他成员预订时,你只需要选择movies.where(x =&gt; x.IsOnStock)简单的解决方案,但保持在任何时候租赁的“状态”改变时,记住更新这个字段......否则它将无法工作。但我认为这是一个好主意,因为当有人租一部电影并说它会在2天内归还它时,也许这种情况不会发生,你只会在真正发生的时候改变那面旗帜。
解决方案#2-现在,您可以通过访问租借条目来开始“过滤”,而不是拥有新的“属性”,同时考虑“租用条目”中的“DateTime.Now”和日期字段。做这样的事情:选择电影列表中没有ID的所有电影,其中有一个条目,其中“DateTime.Now”在租赁日期之间。
如果您有同一部电影的多个副本等,还有更多解决方案。但为了保持简单,只需使用上述解决方案之一。