2010-10-18 6 views
0

La base de données Tier et chaque table unique a un DataSetId et je veux absolument être sûr que les données sont toujours partitionnées correctement.Comment faire pour filtrer de nombreuses entités de nombreux DataServices dans une classe commune?

Actuellement, j'utilise l'attribut QueryInterceptor mais il est compliqué et trop répétitif et sujet aux erreurs. Certains nouveaux Dev pourraient ajouter une nouvelle table et oublier de filtrer par DataSetId, ou juste renommer une table. J'ai donc mis ceci dans une classe de base mais les propriétés IQuerable de mon dépôt ne sont jamais appelées.

J'ai une classe "CoreRepository" qui hérite de ObjectContext, et chacune de mes collections IQueryable utilise "CoreObjectSet". CoreObjectSet étend ObjectSet en ajoutant toujours une expression à filtrer par DataSetId. Lorsqu'il est utilisé directement cela fonctionne bien. Mais lorsqu'il est utilisé pour un DataService, l'accesseur Get pour les collections du Repository n'est jamais appelé par le DataService. Il semble tricher et ne pas les utiliser du tout et accéder directement aux données.

Existe-t-il un moyen d'obtenir l'accès au DataService à travers la classe de référentiel correctement (Et encore obtenir l'efficacité de passer à travers la requête en tant que SQL)?

Si tel est le comportement, pourquoi même rendre DataService de T s'il n'utilise même pas la classe? Pour l'équipe ADO, il suffit de l'ignorer et d'utiliser l'edmx directement comme un hack.

Merci Aaron

Répondre

0

On dirait que la seule façon autour d'elle est d'utiliser un modèle T4 pour générer le DataService. Je préfère de loin une classe de base ou une sorte de gestionnaire réutilisable, mais ADO ne m'a pas donné le choix ici.

Questions connexes