2010-03-24 2 views
5

J'utilise Entity Framework pour la création de ma couche d'accès aux données et je souhaite que toutes mes classes soient internal.Classes internes avec ADO.NET Entity Framework

Je sais qu'il est possible de l'assigner manuellement dans le concepteur pour chaque classe.

MISE À JOUR Je trouve que ma déclaration initiale

Mais ressemble il faut également définir le modificateur interne pour chaque propriété unique dans chaque classe! J'ai environ 30+ entités et ce sera un travail énorme à faire.

était incorrect. Il me manquait que lorsque je définis l'accès sur Entity Type, je dois également définir un accès approprié sur Entity Set.

Connaissez-vous des idées pour définir un «accès par défaut» pour l'ensemble du modèle?

Répondre

0

Qu'essayez-vous d'atteindre exactement? Si chaque classe de votre modèle était déclarée interne et que toutes ses propriétés étaient déclarées internes, cela rendrait votre modèle inutile. Quelque chose devra y accéder et travailler avec lui ...

Etes-vous en train d'essayer d'empêcher une utilisation spécifique du modèle? Il y a de meilleurs moyens de le faire.

MISE À JOUR: Il semble que VS2010 autorise un ObjectContext interne via un modèle T4. Jetez un coup d'oeil ici: http://blogs.msdn.com/efdesign/archive/2009/01/22/customizing-entity-classes-with-t4.aspx

+0

Les classes de conception de cette bibliothèque 'DataAccess' ne doivent être utilisées que par un autre ensemble' Model' très particulier. Je vais avoir l'attribut 'InternalsVisibleTo' dans' DataAccess' donc seul 'Model' peut utiliser ses classes. – Regent

+0

Si vous avez besoin d'eux marqué interne, vous devrez modifier manuellement le fichier du concepteur. Si votre modèle ne change jamais, ce n'est pas vraiment un problème ... mais si cela change, vous pouvez être dans une situation où le fichier du concepteur (qui est généré automatiquement) écrase vos changements. Si vous pouvez utiliser 2010, il semble que les modèles T4 vous permettent de réaliser ce que vous recherchez (http://blogs.msdn.com/efdesign/archive/2009/01/22/customizing-entity-classes-with-t4 .aspx) – ctorx

+0

Votre perspective semble être limitée. Il n'est pas rare de faire abstraction/masquer les objets de la couche de données des bibliothèques qui utilisent la bibliothèque qui les héberge. Peut-être qu'il expose leur accès différemment. Merci d'avoir également fourni un lien pour le faire avancer, cependant. –

1

En fait, si votre classe est interne, peu importe si les propriétés sont publiques - la classe elle-même n'est pas visible en dehors de votre projet, donc les propriétés ne sont jamais accessibles (sauf par réflexion

+0

Vrai, mais comme j'ai trouvé que mon problème était parce que j'ai manqué que si je fixe la visibilité interne sur 'Entity Type' alors j'ai aussi besoin de définir au moins interne sur' Entity Set' ainsi. – Regent

+0

Mais malheureusement, je n'ai pas trouvé le moyen de définir la visibilité sur le niveau 'EntityContainer'. – Regent

+0

En utilisant l'approche CodeFirst, vous avez un contrôle total sur votre modèle. –

Questions connexes