RavenDB를 사용하면 다른 속성에있는 속성의 ID를 가져올 수 있습니까? 예를 들어 Foo에 Bar 객체 목록이 있고 각 Bar 객체에 SnuhId 속성이있는 경우 각 Snuh 속성의 ID를 가져 오는 Include를 사용할 수 있습니까?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가 증가하고 있습니다. 추측 하건데 세션에있는 것 대신 DB 로의 이동 수가 증가하고 있음을 의미합니다.
난 당신이 뭘 하려는지 이해하지만, 당신이 그것을 작동 말한다면 확실하지 - 다음이 될 수 있도록. :) 한 쪽 메모는 전화 할 이유가 없습니다. 모든 쿼리에 대해()을 호출하십시오. –
나는 내가하고있는 것을 항상 이해하지 못한다. :) 실제로 나는 캐스트()을 호출해야하므로, 세션이 아니라 QueryAndCacheEtags()에서 호출하기 때문에. QueryAndCacheEtags()는 ApplicationServer 서브 클래스가 아닌 EntityBase를 리턴합니다. –