2011-01-13 2 views
1

Pour le code First CTP 3 et 4 I avait un modèle de référentiel générique implémenté en implémentant une méthode dans mon DbContext qui avait return this.ObjectContext.CreateObjectSet<T>. Cela m'a permis de créer un ensemble d'objets pour tout type dont j'avais besoin, que je peux ensuite utiliser avec Linq pour le code.Comment puis-je obtenir un ObjectSet <T> avec le code EF First CTP5 (pour un référentiel générique?)

Hier soir, j'ai mis à jour vers CTP5 et il semble qu'ils ont beaucoup changé la façon dont DbContext a été implémentée. Un aspect est qu'il n'y a plus de propriété ObjectContext dans la classe DbContext. Pour autant que je sache, il n'y a pas de méthode pour créer un ObjectSet<T> ou tout autre ensemble de données que je peux utiliser pour accéder à la demande de manière générique qui sera liée au contexte de données.

J'ai alors eu l'idée de créer un DbSet<T> dans la méthode à la place, car cela pourrait me permettre d'effectuer des opérations linq-to-entities. Cela ne fonctionne pas non plus, car il n'y a pas de constructeurs pour DbSet<T> (ou c'est ce que le compilateur me dit) et je n'ai aucun moyen de l'attacher à l'instance existante de mon contexte de données.

Quelqu'un a-t-il une idée de la façon d'implémenter un référentiel générique avec Code First CTP5?

Répondre

3

J'ai mes référentiels de retour IQueryable<T>. Les deux ObjectSet<T> et DbSet<T> implémentent cette interface. Pour obtenir un DbSet<T> avec le code-premier, soit retirer la propriété hors de la classe de contexte que vous avez créée, ou la classe de base que vos classes de contexte utilise a une méthode appelée Set<T>() qui renverra le DbSet<T>.

HTH

+0

Aha, j'ai raté la méthode 'Set ()'. Merci! – KallDrexx

Questions connexes