使用RavenDB,是否可以獲取屬性的ID在另一個屬性中?例如,如果Foo有一個Bar對象列表,並且每個Bar對象都有一個SnuhId屬性,我可以使用一個Include來獲取每個Snuh屬性的ID嗎?RavenDB - 在非根級別屬性中獲取根屬性的ID
我試過下面的查詢,但是我得到一個RavenDB異常:索引超出範圍。在這個查詢中,ApplicationServer是一個根元素,並且它有一個ApplicationsWithOverrideGroup對象的列表。每個對象都有一個ApplicationId屬性。這是我想要包含的ApplicationId。
IEnumerable<ApplicationServer> appServers = QueryAndCacheEtags(session =>
session.Advanced.LuceneQuery<ApplicationServer>()
.Include(x => x.CustomVariableGroupIds)
// This is the line I'm trying to make work:
.Include(x => (from item in x.ApplicationsWithOverrideGroup select item.ApplicationId).ToList())
).Cast<ApplicationServer>();
這些方法的任似乎是工作。需要徹底測試。
.Include(x => x.ApplicationsWithOverrideGroup)
或
.Include(x => x.ApplicationsWithOverrideGroup[0].ApplicationId)
如果該第一選項的確工作,那麼一個屬性,在一個指定的包含(),將包括在其內的ID屬性。是對的嗎?
我不確定這兩個人是否真的有效,但他們似乎是。如果他們都工作,我不知道其中一個比另一個好...
好的,那不工作。 NumberOfRequests正在增加,我猜測這意味着訪問數據庫的次數正在增加,而不僅僅是會話中的內容。
不知道我理解你想要做什麼,但如果你說出來的作品 - 那麼所以它是。 :)一方面說明,沒有理由在每個查詢上調用.Cast()。 –
2012-01-10 03:41:15
我並不總是明白我在做什麼。 :)我其實不得不打電話給Cast(),因爲我在QueryAndCacheEtags()上調用它,而不是在會話上調用它。 QueryAndCacheEtags()返回EntityBase,而不是ApplicationServer子類。 –
2012-01-10 15:58:20