【发布时间】:2017-09-25 13:43:28
【问题描述】:
我想创建一个预订系统,该系统具有在预订前检查房间可用性的功能。我在 MVC asp 网络中这样做。
但是,我在调用用于检查可用性的 SQL 时遇到问题,因为 My Reservation 和 RoomType 表具有多对多关系。
我的表和数据模型如下:
到目前为止,我已经自己想出了以下几点:
Select * from RoomTypes
where id = 3 and not exists
(select * from Reservation_RoomType
where ReservationId =
(select id from Reservations where Arrival <= '2017-05-18' and Depature >= '2017-05-20' ))
在 Linq 中
var query = (from rooms in context.RoomTypes
where (rooms.Id == modelid) &&
!(context.Reservation_RoomTypes.Any(a => a.ReservationId ==
(from reservations in context.Reservations where (reservations.Arrival <= DateTime.Parse("2017-05-18"))
&& (reservations.Depature => DateTime.Parse("2017-05-18"))) select *);
由于我当前的播种,这应该不会返回任何房间,但如果我将房间 ID 更改为其他应该可用的东西,它仍然不会显示任何房间。 SQL 不是我的强项,我很肯定我的 linq 表达式格式错误。任何帮助都将不胜感激,因为我把头发扯掉了!
【问题讨论】:
-
您使用哪一列来检查房间的可用性?
-
您想要房型(单人)还是特定房间(103)的可用性
-
实际上,由于 db 模式当前所在的位置,您无法获得可用的实际房间号,只需按类型计算可用房间的数量。是否可以更改架构,或者只是检索?
-
@MadMyche 是的,我一直在考虑必须更改架构,这很好。我正在寻找房间类型的可用性
标签: c# mysql asp.net asp.net-mvc linq