Beste svaret
POCO er vanlige CLR (Common Language Runtime) -objekter. Det er i utgangspunktet en enhet i et domene. I enhetens rammeverk er det vanligvis nyttig i kode første modell ikke i database første modell. Denne klassen arver ikke funksjonaliteten til noe spesifikt rammeverk eller teknologi. Det er en enkel offentlig klasse og inneholder bare egenskaper og metoder. Disse metodene implementerer ikke vedvarende logikk som lagring og henting av data fra databasen. Disse klassene kalles også Persistence Ignorant-klasser. I utgangspunktet fungerer det som et lag for å kommunisere med databasetabellens rader og kolonner.
Eksempel på Poco-klasse
public class Group
{
public int ID {get; sett; }
offentlig streng GroupName {get; sett; }
offentlig ApplicationUser-medlem {get; sett; }
offentlig streng GroupDescription {get; sett; }
offentlig ICollection
}
POCO oppfører seg bedre enn DTO [Design]
A DTO » s eneste formål er å overføre tilstand, og skal ikke ha noen oppførsel. Se Martin Fowler «s forklaring på en DTO for et eksempel på bruken av dette mønsteret.
Mens en POCO følger OOP-reglene. Det skal (men trenger ikke) ha tilstand og oppførsel. POCO kommer fra POJO, laget av Martin Fowler [ anekdote her ]. Han brukte begrepet POJO som en måte å gjøre det sexigere å avvise rammeverket EJB-implementeringer. POCO bør brukes i samme sammenheng i.Net. Ikke la rammeverk diktere din objektets design.
Hvis du vil vite mer om .NET og Entity-rammeverk, kan du sjekke ut min youtube-kanal
Svar
POCOer (vanlige gamle CLR-objekter) er ganske enkelt enheter av domenet ditt. Normalt når vi bruker enhetsrammeverk, genereres enhetene automatisk for deg. Dette er flott, men dessverre disse enheter er ispedd databasetilgangsfunksjonalitet som er tydelig imot SOC (Separation of concern). POCO er enkle enheter uten datatilgangsfunksjonalitet, men gir likevel alle funksjonene EntityObject funksjonell ting som
- Lazy loading
- Endringssporing
Her er en god start for dette
Du kan også generere POCO-er så enkelt fra ditt eksisterende Entity-rammeprosjekt ved hjelp av kodegeneratorer.