web-dev-qa-db-fra.com

qu'est-ce que Entity Framework avec POCO?

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?

32
pdiddy

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 de récupération ou de conservation d'objets à 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 (c'est-à-dire, ne demandant pas à l'utilisateur de 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 IO 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.

45
Dathan

POCO = Objets CLR anciens.

De vieux objets CLR (c.-à-d. C # ou VB) signifient que je peux parler C # ou VB tout le temps que je rédige mon programme, sans avoir à vous soucier du langage de base de données ésotérique, 

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

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

4
Robert Harvey

La classe POCO est la classe qui ne dépend d'aucune classe de base spécifique au framework. C’est comme toute autre classe .net normale, c’est pourquoi on l’appelle «Plain Old CLR Objects» Ces entités POCO (également appelées objets ne connaissant pas la persistance) prennent en charge la plupart des mêmes requêtes LINQ que les entités dérivées d’EntityObject.

1
KADEM Mohammed

POCO = Objets CLR ordinaires

Avantages de POCO:

Technologie L'agnosticisme est un bonheur: Ce concept tourne généralement autour de PI (Persistence Ignorance), mais ce n'est pas seulement cela. Ignorer la persistance signifie que vos entités doivent être libérées de toutes les contraintes de code liées à la persistance qu'un framework (généralement un ORM) vous impose. C'est par exemple pour Si vous avez un mappage de niveau d'attribut où ces attributs ne font pas partie de votre domaine mais simplement parce qu'un cadre le veut bien, alors votre domaine n'est pas persistant ignorant . Sidar dit ici

0
Mohammadreza