J'ai lu des articles sur Poco dans le cadre d'entité mais je ne comprends toujours pas ce que je peux l'utiliser. Comment Poco peut-il bénéficier à mes projets? P>
4 Réponses :
POCO est juste "Old Old Object CLR". C'est juste une classe standard, toute classe standard. P>
En termes de FE, les personnes se réfèrent à la possibilité de configurer EF pour stocker vos propres classes (non générées directement par EF) dans la base de données. P>
POCO sont des cours conçus pour transférer des données dans votre application (c'est-à-dire déplacer les données de la couche de données sur la couche d'interface utilisateur). Ils découplent également la structure de votre application du schéma de votre base de données. p>
sur de petits projets Ce n'est pas un gros problème, mais comme le projet augmente le modèle d'objet (comment vous concevez votre POCOS) a tendance à s'arrêter du schéma de base de données. p>
D'autres méthodes généralement utilisées dans .NET sont des datables et des jeux de données. Typiquement, les données sont récupérées en utilisant le nom de la colonne. Ces couples vous faites le nom de la colonne dans votre base de données. Si le nom de la colonne change dans la base de données, vous cassez des pauses. P>
Je n'aime pas l'aversion appelant Pocos comme DTO. Pardon. :)
Normes POCO pour «Old CLR Object CLR». Il fait référence à un style d'architecture ORM où tout le travail de persistant et de chargement des données du magasin de données est effectué par le système avec l'objet lui-même sachant ce qui se passe. Cela signifie que l'ORM peut supporter des objets totalement unis b> qui n'ont été modifiés de quelque manière que ce soit avec l'orj. Un orèse prenant en charge la persistance de POCOS ne nécessitera pas de votre classe hériter d'une base spécifique, d'implémenter une interface ou même des méthodes d'étiquette avec tous les attributs. P>
L'opposé complet de ceci (parfois appelé que les objets d'accès à des données - ou DAO) est lorsque tout le stockage est géré par l'objet lui-même, il sait exactement comment sérialiser et stocker lui-même et comment se charger le cas échéant. Dans ce cas, les objets doivent être utilisés uniquement pour transférer les données et ne doivent représenter aucune des logiques commerciales du système. P>
En réalité, cela représente plus d'un spectre avec ces deux situations à l'une ou l'autre extrémité. De nombreux ormes sont assis quelque part au milieu, nécessitant une persistance d'être traitées à l'extérieur à la classe, mais nécessitant souvent des métadonnées ou des interfaces mises en œuvre sur les classes persistantes pour aider les choses. P>
L'EF (v1) ne prend pas en charge les POCOS. Les objets doivent implémenter diverses interfaces (pour fournir une notification des changements de valeurs de propriété, etc.) afin d'être persistables par le cadre. Je crois qu'il y a POCO est souvent considéré comme bon car il permet une séparation forte des préoccupations. Vous pouvez définir vos objets de données pour avoir une connaissance absolument nulle du mécanisme qui sera utilisé pour les stocker. (Donc, cela facilite la sortie du mécanisme de stockage pour quelque chose de différent à l'avenir). Cela signifie également que vous n'avez pas besoin de concevoir vos objets de données avec aucune considération pour la base de données / cadre utilisé pour les stocker. P>
Je crois que votre définition de DTO est fausse - elles sont censées être assez synonymes de Poco / Pojo. DTO est un objet de stockage sans comportement. Peut-être que vous pensais à Dao (objet d'accès aux données)?
POCO n'est qu'une classe normale, sans interfaces ajoutées ni classes de base pour le faire fonctionner avec votre couche de base de données (dans ce contexte). P>
Avantage sont: 1) Aucune dépendance sur cette couche de base de données particulière, vous pouvez donc l'échanger pour un meilleur (I.e. NHibernate) sans jamais avoir à modifier autre chose que la couche de base de données. P>
2) Cela facilite le test de vos classes. P>
3) Aucun code de plaque de chaudière Pour notifier quand une propriété a changé, etc. Juste getters et setters simples. P>
Impès, vos objets de domaine sont chargés à partir de l'ORM, sans que cet objet soit dû dire dans la manière dont il est chargé, comment les modifications sont suivies ou comment elles sont sauvegardées, etc. P>.
NHibernate fait un très bon travail à cela, la seule exigence est que vous devez effectuer toutes les propriétés / méthodes virtuelles, c'est un bien meilleur que toute dépendance difficile. p>
Un Poco est plus ou moins juste une classe simple pour refléter les données d'une base de données en d'autres termes, c'est un CC (conteneur de données)