2008-10-17 9 views
4

J'aime vraiment Entity Framework, mais il y a des éléments clés qui me posent problème. Quelqu'un peut-il me dire comment filtrer un EntityDataSource sur une colonne Association? EF masque les valeurs FK et possède à la place une propriété Association. Compte tenu d'une entité, personne, avec une association de PersonType, je l'aurais prévu quelque chose comme cela fonctionne si je veux filtrer ma personne Entité par type:Filtrer EntityDataSource sur la valeur de l'association

GridDataSource.EntityTypeFilter = "it.PersonType.PersonTypeID = 1"; 

ou

GridDataSource.Where = "it.PersonType.PersonTypeID = '1'"; 

ou même

GridDataSource.WhereParameters.Add(new Parameter("it.PersonType.PersonTypeID", DbType.Object, "1")); 

mais aucun de ces travaux. Quelqu'un sait-il comment faire cela?

Répondre

1

Je pense que la réponse que vous cherchez consiste à utiliser la méthode Inclure, par exemple:

entities.it.Include("PersonType").Where(a => a.PersonType.PersonTypeID = '1'); 
+1

qui semble prometteur. Je vais devoir mettre en place un autre test pour cela, car frustré, nous avons sorti EF et mis L2S. Remplacé 6 semaines plus tard EF tirant les cheveux en une journée avec L2S – jlembke

0

Avez-vous essayé d'appliquer le filtre en mémoire à l'aide de LINQ? (Ou peut-être contre la base de données?)

var personType = new PersonType { Id = 1 }; 
var query = PersonDataSource.Where(p => p.PersonType.Equals(personType)); 
// use this query as the DataSource for your GridView 

Je dois admettre que je ne l'ai pas fait quelque chose comme ça, mais je l'ai utilisé cette astuce pour mettre à jour/créer une entité sans charger les entités associées en premier.

Questions connexes