Qu'est-ce que Entity Framework avec POCO?

.net c# entity-framework poco

Question

Quel est l'avantage d'utiliser POCO? Je ne comprends pas le sens de «Persistence Ignorance», qu'est-ce que cela signifie? Que l'objet poco ne puisse pas exposer des objets comme Save? Je ne peux pas comprendre ce POCO qu'il y a beaucoup de bruit autour.

Quelle est la différence avec les entités générées par EF et POCO?

Réponse acceptée

POCO signifie "Plain Old C # Object" ou "Plain Old CLR Object", selon le destinataire. Si un framework ou une API indique qu'il fonctionne sur des POCO, cela signifie qu'il vous permet de définir votre modèle d'objet de manière idiomatique sans avoir à faire en sorte que vos objets héritent de classes de base spécifiques. De manière générale, les frameworks qui fonctionnent sur les POCO vous permettent une plus grande liberté et un meilleur contrôle sur la conception et la mise en œuvre de vos classes, car elles ont moins d'exigences pour fonctionner correctement.

L'ignorance de la persistance signifie que, dans la mesure du possible, tout élément de votre code opérant au niveau de la couche de logique métier ou d'une version ultérieure ne sait rien sur la conception réelle de la base de données, sur le moteur de base de données que vous utilisez, sur le mode ou le moment où les objets sont récupérés ou persistants. à la base de données. Dans le cas du MEF, l'ignorance de la persistance est obtenue en travaillant sur les POCO et en utilisant LINQ pour exécuter des requêtes (en n'obligeant pas l'utilisateur à créer des requêtes SQL pour récupérer les objets souhaités).

C'est une question ouverte, mais il est généralement admis que, dans la plupart des cas, les objets de domaine (ou les objets métier - dans tous les cas, les POCO mentionnés ci-dessus) doivent ignorer la logique de persistance. Cela signifie qu'au lieu d'appeler MyBusinessObject.Save() , vous avez un gestionnaire d'E / S ou une classe d'adaptateur, et vous appelez Manager.Save(MyBusinessObject) . De cette manière, vous évitez d'exposer la sémantique de persistance à vos objets métier. Vous obtenez ainsi une meilleure séparation des problèmes.


Réponse populaire

POCO = Objets CLR ordinaires.

Les vieux objets CLR (par exemple, C # ou VB) signifient que je peux parler C # ou VB tout le temps que je rédige mon programme, sans avoir à me soucier du langage de base de données ésotérique comme

UPDATE MYTABLE SET MYFIELD1 = @MYPARAMETER1, MYFIELD2 = @MYPARAMETER2 BLAH BLAH

EF Entités générées == POCO connecté (indirectement) à une base de données.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow