POCO DataSet
POCO DataSet is a lightweight, extensible data container for .NET
applications that need structured tabular data without the complexity and
legacy constraints of System.Data.DataSet. It is designed around plain C#
objects (POCOs), JSON-friendly serialization, and clean separation between
data, metadata, and presentation.
Purpose of this Summary
This summary provides a high-level overview of what POCO DataSet is
and why it exists. It is intended as a landing page for new readers: a quick,
one-page introduction that helps developers decide whether POCO DataSet is
relevant to their project, and where to go next in the documentation set.
High-Level Concept
At its core, POCO DataSet is a simple but powerful model for
describing data in tables, rows, and columns using interfaces and POCO
implementations. It provides:
- A DataSet that groups multiple named tables.
- A DataTable that represents a single logical table (columns + rows).
- A DataRow that exposes values by column name in a strongly typed way.
- Column metadata that describes the schema (name, type, nullability, and other attributes).
This model is deliberately small and focused. It avoids hidden
behaviors, implicit database assumptions, and heavyweight dependencies, making
it ideal for modern application architectures.
Key Goals and Benefits
-
Lightweight: focuses on the minimum set of
concepts needed to describe tabular data.
-
POCO-based: uses plain C# objects that are easy
to understand, test, and extend.
-
Serialization-friendly: designed to roundtrip
cleanly through JSON without custom hacks.
-
UI-agnostic but UI-friendly: works well with
Blazor, MVC, APIs, background services, and more.
-
Metadata-driven: supports table and column
metadata for dynamic UIs and rule-based processing.
-
Composable: can be combined with other layers
(e.g., application services, plugin architectures) without forcing a specific
ORM or database technology.
Who Is POCO DataSet For?
-
.NET developers who want a clean, tabular data
model without adopting a full ORM.
-
Teams migrating from System.Data.DataSet who
want a modern, POCO-based alternative.
-
Developers who build dynamic user interfaces
(for example, Blazor pages driven by metadata).
-
Architects designing plugin-based or modular
systems where data needs to flow across boundaries.
How It Fits into an Application
POCO DataSet is not a database, ORM, or UI framework. It sits
between those layers as a neutral, structured data model. Typical usage
patterns include:
-
Receiving data and metadata from an application
service layer.
-
Passing data into UI components that render
grids, forms, and search screens dynamically.
-
Serializing DataSets to JSON for transport
between server and client.
-
Storing or caching DataSets as snapshots of
application state or search results.
Table of Content