Plain old CLR object
In software engineering, a plain old CLR object, or plain old class object is a simple object created in the.NET Common Language Runtime that is unencumbered by inheritance or attributes. This is often used in opposition to the complex or specialized objects that object-relational mapping frameworks often require. In essence, a POCO does not have any dependency on an external framework.
Etymology
Plain Old CLR Object is a play on the term plain old Java object from the Java EE programming world, which was coined by Martin Fowler in 2000. POCO is often expanded to plain old C# object, though POCOs can be created with any language targeting the CLR. An alternative acronym sometimes used is plain old.NET object.Benefits
Some benefits of POCOs are:- allows a simple storage mechanism for data, and simplifies serialization and passing data through layers;
- goes hand-in-hand with dependency injection and the repository pattern;
- minimised complexity and dependencies on other layers which facilitates loose coupling;
- increases testability through simplification.