나는 Orchard CMS (버전 1.8)를 사용하여 백엔드 용으로 제작할 모듈 코드의 내용에 대한 쿼리를 작성합니다.과수원 CMS IContentQuery 하위 쿼리?
특정 문화권에 대한 번역이없는 콘텐츠를 얻으려고합니다.
SQL 쿼리를 작성하고 Microsoft SQL Server Management Studio에서 테스트 할 수있었습니다.
SELECT [Id]
,[CultureId]
,[MasterContentItemId]
FROM [Orchard_MyTenant].[dbo].[Orchard_Localization_LocalizationPartRecord]
WHERE [CultureId] != 1
AND [Id] NOT IN (
SELECT [MasterContentItemId]
FROM [Orchard_MyTenant].[dbo].[Orchard_Localization_LocalizationPartRecord]
WHERE [Id] IN (
SELECT [Id]
FROM [Orchard_FestivalTV].[dbo].[Orchard_Localization_LocalizationPartRecord]
WHERE [CultureId] = 1
)
)
나는 이탈리아어로 변환되지 않습니다 프랑스어 내용을 찾을 수없는 것, 이것은 단지 마스터 문화에서 번역되지 않은 문화를 발견 이해하고, 예를 들어, 마스터 문화로 EN-US 부여하지 않을 것입니다. 나는 그 개선을 나중에 할 수있다.
IContentQuery를 사용하여 구현하는 방법을 모르겠다.이 기능은 쿼리가 이미 구축 된 대형 모듈의 일부가 될 수 있기 때문에 사용해야한다.
이 쿼리는 QueryOver를 사용하여 만들 수 있지만 이미 배치 된 모든 레거시 코드를 변경하지는 않습니다.
누구나 IContentQuery를 사용하여 구현할 수있는 방법을 설명 할 수 있습니까?
유용한 정보를 잊어 버렸을 때 알려주십시오.
이 방법은 작동하며 기본적으로 이미 구현 한 것입니다. 내 질문에 명확하지 않은 것에 대해 사과해야한다. 나의 경우, 질의는 IEnumerable에 모든 것을 넣고 Linq로 필터링하기 위해 너무 많은 contentItems를 반환 할 수있다. IContentQuery에이 "필터"를 직접 삽입하는 방법이 있는지 궁금합니다. – Bovaz
오, 그래, 맞아. Orchard의 일반적인 문제는 콘텐츠 쿼리가 정말 느리게 진행될 수 있고 내가 아는 한 훌륭한 고급 솔루션이 없다는 것입니다. 모험을 느끼는 경우 NHibernate를 통해 직접 Orchard 테이블을 쿼리 할 수 있습니다. 이것 좀 봐 : http://weblogs.asp.net/bleroy/querying-orchard-in-hql – Lawyerson
안녕하세요, NHibernate, HQL, 또는 QueryOver usng하여 결과를 얻을 수 있습니다.그러나이 기능을 사용하면 양식의 내용 (IContentQuery로하는 다른 모든 항목)을 기반으로 큰 쿼리를 작성하는이 코드에서 작동해야하는 모든 코드를 변경해야합니다. 나는 다른 버전의 오차드에서 테이블을 약간 변경하여 모든 사용자 정의 쿼리를 검토 할 것을 두려워하기 때문에 IContentQuery와 다른 것을 사용할 때마다 조금 걱정된다. – Bovaz