Entity framework 寻找免费住宿

Entity framework 寻找免费住宿,entity-framework,datetime,sql-server-2005,entity-sql,Entity Framework,Datetime,Sql Server 2005,Entity Sql,我需要一个问题的帮助吗? 我有两张桌子,包括预订和公寓。 表保留有ResId、rfrom(datetime)、rto(datetime)、status(int)、UnitID(外键)列。 状态2表示其已确认。 我需要获取请求期间的所有可用单位,查询只需要返回请求期间(不存在)中有未确认的预订(状态==2)的单位。 我正在使用实体框架,所以它应该是eSQL查询(另一个选项是使用存储过程,但我希望避免)。数据库是sqlexpress2005。 此外,查询应该根据表单位中的值筛选单位,但这不是问题。

我需要一个问题的帮助吗? 我有两张桌子,包括预订和公寓。 表保留有ResId、rfrom(datetime)、rto(datetime)、status(int)、UnitID(外键)列。 状态2表示其已确认。 我需要获取请求期间的所有可用单位,查询只需要返回请求期间(不存在)中有未确认的预订(状态==2)的单位。 我正在使用实体框架,所以它应该是eSQL查询(另一个选项是使用存储过程,但我希望避免)。数据库是sqlexpress2005。 此外,查询应该根据表单位中的值筛选单位,但这不是问题。 我可以使用linq对查询结果(多个where语句)执行此操作

编辑: 此查询正在运行:

    select * from Units where
    not exists (select *
        from Reservations
        where Reservations.unitID = Units.unitID
        and Reservations.status = 2
        and (@datefrom between Reservations.rfrom and Reservations.rto-1
        or @dateto between Reservations.rfrom+1 and Reservations.rto
        or rfrom between @datefrom and @dateto-1 
        or rto between @datefrom+1 and @dateto))
and Units.category=@cat
实体sql的外观如何?我可以和林克一起做吗? 实体名称与表相同

select value u from AEDMEntities.Units as u WHERE
not exists (select value r from AEDMEntities.Reservations as r
where  r.Unit.unitID = u.unitID and r.status = 2 AND 
(datetime '2009-7-7 00:00'between r.rfrom and r.rto 
or datetime '2009-7-7 00:00' between r.rfrom and r.rto 
or r.rfrom between datetime '2009-7-7 00:00'and datetime '2009-7-27 00:00' 
or r.rto between datetime '2009-7-7 00:00' and datetime '2009-7-27 00:00'))
AND u.category=3

这是有效的但是我不能像在sql中那样写-1或+1来减去/加上日期如何实现这一点,我只需要将其参数化。Unit是抽象类它有2个派生类app&rooms(每个类型继承表),因此我只需要返回app或rooms,具体取决于方法输入参数any ideas welcome。

我最终使用存储过程