qu'est-ce que le cadre D'entité avec POCO

Quel est l'avantage d'utiliser POCO? Je ne comprends pas la signification de L'Ignorance de la persistance, qu'est-ce que cela signifie? Que l'objet poco ne peut pas révéler des choses comme Save? Je ne peux pas me concentrer sur 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?

31
demandé sur pdiddy 2010-04-20 07:50:28

4 réponses

POCO signifie " Simple Old C # Object "ou" simple Old CLR Object", selon qui vous le demandez. Si un framework ou une API indique qu'il fonctionne sur POCO, cela signifie qu'il vous permet de définir votre modèle d'objet idiomatiquement sans avoir à faire hériter vos objets de classes de base spécifiques. En général, les cadres qui fonctionnent sur les POCO vous permettent une plus grande liberté et contrôle sur la conception et la mise en œuvre de vos cours, parce qu'ils ont moins de exigences pour fonctionner correctement.

persistance ignorance signifie que, autant que possible, tout dans votre code opérant à la couche logique d'affaires ou supérieur ne sait rien sur la conception réelle de la base de données, quel moteur de base de données que vous utilisez, ou comment ou quand les objets sont récupérés ou a persisté dans la base de données. Dans le cas du MEF, l'ignorance de la persistance est atteinte en travaillant sur les POCO et en utilisant LINQ pour effectuer des requêtes (c.-à-d. ne pas exiger que l'utilisateur créer des requêtes SQL pour récupérer les objets désirés).

C'est une question ouverte, mais il est généralement convenu que dans la plupart des circonstances, les objets de domaine (ou d'affaires - dans les deux cas, les POCO mentionnés ci-dessus) devrait être ignorant de la persistance logique. Ce qui 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 façon, vous évitez d'exposer la sémantique de la persistance sur vos objets d'affaires - vous obtenez mieux la séparation des préoccupations de cette façon.

45
répondu Dathan 2014-04-07 06:49:59

POCO = Plain old CLR Objects.

les vieux objets CLR (c.-à-D. C# ou VB) signifie que je peux parler C# ou VB tout le temps que j'écris mon programme, et ne pas avoir à se soucier du langage de base de données ésotérique comme

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

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

4
répondu Robert Harvey 2010-04-20 05:01:08

la classe POCO est la classe qui ne dépend pas d'une classe de base spécifique au cadre. C'est pourquoi on l'appelle "Simple Old CLR Objects"." Ces entités POCO (aussi connues sous le nom d'objets persistence-ignorant) supportent la plupart des mêmes requêtes LINQ que les entités dérivées D'EntityObject.

1
répondu KADEM Mohammed 2013-09-04 18:55:02

POCO = Plain old CLR Objects

POCO Benefits:

L'agnosticisme technologique est une béatitude: ce concept tourne habituellement autour de PI (persistence Ignorance), mais ce n'est pas seulement cela. L'Ignorance de la persistance signifie que vos entités doivent être débarrassées de toute contrainte de code liée à la persistance qu'un cadre - généralement un ORM - vous impose. C'est le cas, par exemple, si vous avez un mappage au niveau des attributs où les attributs ne font pas partie de votre domaine mais sont là juste parce qu'un cadre veut qu'ils soient là, alors votre domaine n'est pas l'ignorance de la persistance. Sidar a dit ici

0
répondu Mohammadreza 2014-06-03 09:48:13