What Is POCO DataSet?
POCO DataSet is a lightweight, modern, and extensible tabular data model for .NET applications. It provides a clean, POCO-based alternative to System.Data.DataSet, without legacy constraints, hidden behaviors, or heavy dependencies.
POCO DataSet was created to solve a recurring gap in .NET applications: the need to move structured, tabular data between layers without dragging along the complexity of an ORM or the legacy behavior of System.Data.DataSet.
Many applications need a neutral, metadata-rich data container - something that can represent tables, rows, and schema, serialize cleanly, and remain independent of UI frameworks, databases, and persistence models.
A DataSet acts as the root container for related DataTables. Tables are stored under unique names, allowing structured data to be grouped and transported together. The DataSet does not impose relationships or behaviors—keeping the design clean, neutral, and purpose-driven.
A DataTable consists of two main parts:
This design makes DataTables ideal for dynamic UI rendering, metadata-driven forms, and rule-based engines.
A DataRow represents one logical row of data. Values are stored in typed structures matching the schema, providing predictable access by column name and reducing runtime errors.
ColumnMetadata defines a table’s schema, including:
This metadata-driven structure enables UI frameworks, service layers, and rule engines to make dynamic decisions based on schema rather than hard-coded models.
A POCO DataTable is not limited to one object model. The table name remains a human-readable marker that explains what kind of data the table carries, but the same physical row can be viewed through different interface contracts.
This is especially useful when a table carries aggregated business data. A search result, transition context, dashboard result, or service response may combine columns originating from several database tables. Instead of creating several DTOs and copying values between them, consuming code can project the same row into the interface it needs at that moment.
In other words, POCO DataSet supports one table, many contracts, and zero remapping. The data is transported once, while different layers or use cases can interpret the relevant parts through their own interfaces. See "One Table, Many Contracts" page in the "POCO DataSet Concepts" section for a dedicated explanation of interface projections over aggregated data.
POCO DataSet treats schema and data as separate but related concepts. This allows scenarios such as:
Table of Content POCO DataSet
Business Process Programming in .Net
© 2004–2026 Laskarzhevsky Software Inc.
Unless otherwise noted, the content of this website is licensed under the
Creative Commons Attribution 4.0 International License (CC BY 4.0).
Code examples are provided under the MIT License.
You are free to share and adapt the material provided that appropriate
credit is given and any modifications are clearly indicated.
The information provided on this website is for educational purposes only.
The author and publisher make no warranties regarding the completeness
or suitability of the information and are not responsible for any damages
resulting from its use.