NPA is based on the
Java Persistence API (JPA), which is the standard persistence API in the
Java world. NPA follows JPA by providing a complete persistence API and a rich set of ORM features.[2][3]
Motivation
The main purposes of the .NET Persistence API (NPA) are:[2]
To provide a vendor-free persistence API for .NET, making switching from one persistence provider to another easier (avoiding
vendor lock-in).
To provide a cross-language persistence API by extending the popular
Java Persistence API (JPA) to all the .NET programming languages.
Two methods for marking classes as entity classes and for specifying other settings:
Using attributes – meta data is embedded in class definitions in the source code.
Using external XML – meta data is specified in external
XML resource files.
Implementations
NPA is a persistence specification. To use NPA an implementation of the specification is required.
Persistence and ORM vendors can provide their own implementations of NPA.
First implementation, NPA for
NHibernate, was released in December 2011.[6][7]