2010-08-17 9 views
2

J'ai le code LLBLGen suivant qui récupère des articles par catégorie. Essentiellement, il est le choix de la table de l'article où les articles ne sont pas marqués pour suppression et se joindre à la table ArticleTopicCategory pour récupérer des catégories spécifiques (où la catégorie = « string »)Condition de jointure multiple externe LLBLGen

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); 

J'ai ajouté une autre table nommée SuppressedArticle qui est 1 à plusieurs et contient Id, OrganizationId et ArticleId. La théorie est que puisque les articles sont syndiqués sur plusieurs sites Web, si "Site Web A" ne voulait pas publier "Article A", ils pourraient le supprimer, c'est-à-dire insérer un enregistrement dans la table SuppressedArticle.

Sur l'écran d'administration de l'article, je voudrais ajouter un bouton lien pour supprimer/annuler la suppression de l'article, en ajoutant une jointure gauche avec les deux conditions comme:

gauche rejoindre SuppressedArticle sur (Article.Id = SuppressedArticle.articleId et SuppressedArticle.organizationId = 'CC177558-85CC-45CC-B4E6-805BDD1EECCC')

J'ai essayé d'ajouter les multiples rejoindre comme, mais je CAST/erreur de conversion:

« Impossible de convertir implicitement le type ' SD.LLBLGen.Pro.ORMSupportClasses.FieldCompareValuePredicate 'à' SD.LLBLGen.Pro.ORMSupportClasses.IPredicateExp ression '. Une conversion explicite existe (vous manque un casting?) »

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

Toute aide serait grandement appréciée!

Répondre

4

CustomFilter est de type IPredicateExpression, vous créez un prédicat (de type IPredicate) et l'affecter à cette propriété, ce qui bien sûr ne fonctionne pas :)

faire:

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

Merci Otis j'ajouté le chemin de prélecture à la table SuppressedArticle avec prefetchTopic.Add (Art icleEntity.PrefetchPathSuppressedArticle); mais comment puis-je lier profondément dans le balisage tel que Neil

+0

Vous ne savez pas à quoi ressemble votre page, mais vous pouvez essayer notre datasourcecontrol (les chemins de prefetch nécessitent également du code dans le code), ou lier avec le code dans le code derrière? –

Questions connexes