Ich habe den folgenden LLBLGen-Code, der Artikel nach Kategorie abruft. Im Wesentlichen handelt es sich um eine Auswahl aus der Artikeltabelle, in der die Artikel nicht zum Löschen markiert sind, und eine Verknüpfung mit der Tabelle ArticleTopicCategory, um bestimmte Kategorien abzurufen (wobei 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);
Ich habe eine weitere Tabelle mit dem Namen SuppressedArticle hinzugefügt, die eine 1 bis viele ist und Id, OrganizationId und ArticleId enthält. Die Theorie ist, dass, da Artikel an mehrere Websites syndiziert werden, wenn "Website A" "Artikel A" nicht veröffentlichen möchte, sie ihn unterdrücken könnte, d. h. einen Datensatz in die Tabelle "SuppressedArticle" einfügen.
Auf dem Artikelverwaltungsbildschirm möchte ich eine Verknüpfungsschaltfläche zum Unterdrücken/Aufheben der Unterdrückung des Artikels hinzufügen, indem ich eine linke Verknüpfung mit den beiden Bedingungen hinzufüge:
left join SuppressedArticle on (Artikel.Id = SuppressedArticle.articleId und SuppressedArticle.organizationId='CC177558-85CC-45CC-B4E6-805BDD1EECCC')
Ich habe versucht, die Mehrfachverknüpfung wie folgt hinzuzufügen, aber ich habe einen Fehler beim Abgleich/Umwandlung:
"Der Typ 'SD.LLBLGen.Pro.ORMSupportClasses.FieldCompareValuePredicate' kann nicht implizit in 'SD.LLBLGen.Pro.ORMSupportClasses.IPredicateExpression' konvertiert werden. Eine explizite Konvertierung existiert (fehlt ein Cast?)"
IRelationCollection relations = new RelationCollection();
relations.Add(ArticleEntity.Relations.SuppressedArticleEntityUsingArticleId, JoinHint.Left).CustomFilter = new FieldCompareValuePredicate(SuppressedArticleFields.OrganizationId, ComparisonOperator.Equal, this.CurrentIdentity.OrganizationId);
Für jede Hilfe wären wir Ihnen dankbar!