EAV Model Storage for .NET (C#) Entity Attribute Value Model

features EAV model engine for SQL databases

  • Two implentations of data schema provider:
    • metadata DB tables
    • RDFS/OWL-compatible in-memory schema (may be persisted as EAV objects). The following concepts are supported: Class, ObjectProperty, DatatypeProperty, Object (Individual), domain, datatype (core types + date/datetime), cardinality restrictions
  • DB-agnostic: EAV engine can use any ADO.NET-compatible RDBMS supported by NI.Data (MSSQL, MySQL, ODBC/OleDb, SQLite etc)
  • Derived (computable at SQL level) propeties support (for example, year/month/quarter for date properties)
  • provides complete NI.Data.IDalc implementation for accessing and updating dynamic objects like usual ADO.NET DataTable and DataRow
  • Extended relex syntax for loading properties of related objects in one query (automatic intelligent joins). Queries may be composed by end-user with js condition builder.
  • WCF-based API (REST, SOAP/WS) for querying and manipulating DB records stored as EAV
  • REST API (WCF) was specially optimized for JSON serialization of large datasets (up to 500k rows)
  • Optimized for querying millions of business objects


NuGet Package NI.Data.Storage
Source code NI.Data.Storage on GitHub
.NET API Documentation API Reference
REST Service Demo Pack Download
NI.Data.Storage provides simple API for accessing dynamic EAV (entity-attribute-value) data model like usual database tables. Storage supports all basic concepts for defining dynamic data model: classes (tables), properties (columns), relationships between objects.

EAV Storage is a free component (LGPL) and can be used in commercial projects without any restrictions.
Semantic Storage: combines benefits of SQL + NoSQL + Graph DB for business data

how it works

What is NI.Data.Storage and how to use it

The core idea of Semantic Storage is combining SQL DB benefits with the schema flexibility of NoSQL and semantic capabilities of tripplestore (Graph DB): triplets are stored in a SQL database as EAV and at the same time objects could be accessed like usual DB tables (query, insert, update, delete) by .NET application or API client.

The key advantage of NI.Data.Storage (and significant difference from specialized tripplestores) is the ability to combine traditional relational tables and entity-attribute-value (triplet-based) representation in one common SQL database. It is possible to switch between these data presentation forms and if the application uses NI.Data for accessing database (all NReco Framework-based applications) this may be absolutely transparently for UI and business logic layers.

Semantic storage can be used in the following cases (but not limited to):

Looking for commercial component support or
EAV Storage integration services?
EAV Storage Commercial Support Request
Current version of EAV storage was designed for full .NET 4.x / WCF REST API.
If you're interested in refined version for .NET Core / WebAPI please let us know:
EAV Storage .NET Core Version Request