var locations = (from location in session.Query<Location>()
where
(location.MB_ID == 0 || location.MB_ID == null) &&
(location.hide != "Y" || location.hide == null) &&
(location.locationNameRaw != "" && location.locationNameRaw != null) &&
((location.isIPCapableText != "" && location.isIPCapableText != null) || (
(location.ISDNNumber1 != null && location.ISDNNumber1 != "") ||
(location.ISDNNumber2 != null && location.ISDNNumber2 != "") ||
(location.ISDNNumber3 != null && location.ISDNNumber3 != "") ||
(location.ISDNNumber4 != null && location.ISDNNumber4 != "") ||
(location.ISDNNumber5 != null && location.ISDNNumber5 != "") ||
(location.ISDNNumber6 != null && location.ISDNNumber6 != "")
))
&& (location.privateRoom == "N" || location.privateRoom == "" || location.privateRoom != null)
&& (
from lll in session.Query<LocationLonLat>()
where
location.locationID == lll.locationId
select lll.locationId
).Any()
&& (location.LastUpdatedTime > lastUpdateTime)
&& location.LocationTimes.Count() > 0
/*&& (
from lt in session.Query<LocationTimes>()
where
location.locationID == lt.LID
select lt.LID
).Any()*/
select location
)
.ToList();
Location(1)和LocationTimes(很多)之間有關係,我只想返回至少有一個LocationTime記錄的位置的數據集。Linq到nHibernate - 排除沒有子元素的元素
我試了幾件事情......
當我添加一行:
&& location.LocationTimes.Count() > 0
,或者如果我添加一行:
&& (
from lt in session.Query<LocationTimes>()
where
location.locationID == lt.LID
select lt.LID
).Any()
基礎連接被關閉:服務器關閉了預期保持活動狀態的連接。
我懷疑這可能是因爲數據集或東西的大小...
是否有這樣做的更好的辦法?像「左外連接」或什麼的?
爲什麼不使用locationTime連接位置?因爲您正在搜索位置時間位置的存在 – kalki 2012-07-25 09:53:56