Key features
Integration
- Visual Studio 2019+, Visual Studio Code, Ryder, SharpDevelop 3 and others (MSBuild targets support is required)
- ASP.NET Core
- WPF (built-in
INotifyPropertyChanged
,INotifyCollectionChanged
,IDataErrorInfo
implementation) - Open, extendable architecture (built-in IoC container, custom IoC containers support)
- Built-in logging framework, custom loggers are supported through IoC
Domain modelling
- Code-First approach with attribute-based mappings
- Wide range of supported standard .NET types including
Nullable<T>
,TimeSpan
&Enums
Entities
,Structures
(aka ValueTypes), persistent interfaces, closed and open generic classes- Persistent collections (
EntitySet<TEntity>
) - Unidirectional and bidirectional associations with automatic inverse support and referential integrity checks
- Built-in validation with declarative business rules runs in "Continious", "On Demand" or "On Commit" modes
- Global & local lifecycle events
- Unified
Key
object
Database-related features
- Automatic maintenance of database schema: tables, foreign keys, constraints, indexes, sequences/generators, full-text indexes
- Wide range of supported primary key types:
int
,long
,string
,guid
, etc. - Composite primary keys
- "Single Table", "Class Table", "Concrete Table" inheritance schemes support
- Declaratively defined unique, non unique, full-text indexes
- Arbitrary type discriminators
- Large inheritance hierarchies support (efficient JOINs for TPT)
Queries, LINQ
- Automatic traversal through
Entity
references &EntitySets
- Subqueries (aggregates, correlated & non-correlated subqueries)
- Left Outer joins
- Large local collections support
- Projections (non-tail projections, subqueries, anonymous types, custom types aka DTO)
Order by
andGroup by
reference field, anonymous types, aggregate, member of enumTake
/Skip
operators- Built-in full-text queries support
- Custom extensions
- Direct SQL commands execution
Performance
- Automatic query pre-compilation
- Delayed queries (aka Future queries)
- Partial/Eager Entity fetching
- Automatic statement batching
- Partial collections’ content fetching
- Lazy loading
- Partial materialization
- MARS support
- Fast key generation (Hi-Lo algorithm, sequential guid algorithm)
- L1 cache
Operational features
GC
-friendly IdentityMap (weak references toEntities
are used)- Unit of work pattern (
SaveChanges
/CancelChanges
API) - Cascading updates/deletes
- Automatic reference dependency ordering/loop breaking on
Persist
- Transactions (regular, nested aka savepoints, long-running transactions)
- Automatic flushes/persist before queries, etc.
- Local transactions & N-level undo
- Pessimistic & optimistic concurrency control, unified
VersionInfo
object - Automatic change tracking
- Operation logging
Supported databases
- MS SQL Server 2008 R2, 2012, 2014, 2016, 2017, 2019
- MS Azure
- Oracle 10g, 11g
- PostgreSQL 8.3, 8.4, 9.0, 9.1, 9.2, 10, 11
- MySQL 5.5, 5.6
- Firebird 2.5