Условие множественного внешнего соединения LLBLGen - PullRequest
2 голосов
/ 17 августа 2010

У меня есть следующий код LLBLGen, который получает статьи по категориям. По сути, это выбор из таблицы статей, где статьи не помечены для удаления, и присоединение к таблице ArticleTopicCategory для извлечения определенных категорий (где category = 'string')

   ArticleCollection articles = new ArticleCollection();
                IPredicateExpression articlesFilter = new PredicateExpression();
                articlesFilter.Add(ArticleFields.IsFlaggedForDeletion != true);
                PrefetchPath prefetchTopic = new PrefetchPath(EntityType.ArticleEntity);
                prefetchTopic.Add(ArticleEntity.PrefetchPathTopic);
                prefetchTopic.Add(ArticleEntity.PrefetchPathArticleTopicCategories).SubPath.Add(ArticleTopicCategoryEntity.PrefetchPathTopicCategory);
                articles.GetMulti(articlesFilter, prefetchTopic);

Я добавил еще одну таблицу с именем SuppressedArticle, которая равна 1 для многих и содержит Id, OrganizationId и ArticleId. Теория заключается в том, что, поскольку статьи объединяются на нескольких веб-сайтах, если «Веб-сайт А» не хочет публиковать «Статью А», они могут ее подавить, то есть вставить запись в таблицу SuppressedArticle.

На экране администратора статьи я хотел бы добавить кнопку ссылки для подавления / отмены статьи, добавив левое объединение с двумя условиями, такими как:

левое объединение SuppressedArticle на (Article.Id = SuppressedArticle.articleId и SuppressedArticle.organizationId = 'CC177558-85CC-45CC-B4E6-805BDD1EECCC')

Я попытался добавить множественное объединение, но я произвел ошибку / преобразование:

"Невозможно неявно преобразовать тип 'SD.LLBLGen.Pro.ORMSupportClasses.FieldCompareValuePredicate' в 'SD.LLBLGen.Pro.ORMSupportClasses.IPredicateExpression'. Существует явное преобразование (у вас отсутствует преобразование?)"

IRelationCollection relations = new RelationCollection();
                relations.Add(ArticleEntity.Relations.SuppressedArticleEntityUsingArticleId, JoinHint.Left).CustomFilter = new FieldCompareValuePredicate(SuppressedArticleFields.OrganizationId, ComparisonOperator.Equal, this.CurrentIdentity.OrganizationId);

Любая помощь будет принята с благодарностью!

1 Ответ

3 голосов
/ 17 августа 2010

CustomFilter имеет тип IPredicateExpression, вы создаете предикат (типа IPredicate) и назначаете его этому свойству, что, конечно, не работает:)

do:

IRelationCollection relations = new RelationCollection();
relations.Add(ArticleEntity.Relations.SuppressedArticleEntityUsingArticleId, JoinHint.Left)
             .CustomFilter = new PredicateExpression(SuppressedArticleFields.OrganizationId == this.CurrentIdentity.OrganizationId);
...