Similar to the Java context, the term is used to contrast a simple object with one that is designed to be used with a complicated, special object framework such as an ORM component. Another way to put it is that POCOs are objects unencumbered with inheritance or attributes needed for specific frameworks. In .NET terms, the word is most often used in the programmatic sense, to differentiate a non-Serviced Component (see MTS) from a "standard object". It can also be used in a tongue-in-cheek manner, referencing the perceived complexity and invasiveness of Java-based programming frameworks such as the legacy EJB2.
POCO is often incorrectly expanded to Plain Old C# Object, but POCOs can be created with any language targeting the CLR. An alternative acronym sometimes used is PONO, for Plain Old .NET Object.