lref
Core crate for Rust Entity Framework — an EFCore-inspired ORM for Rust.
Provides the core ORM abstractions: EntityType, DbContext, DbSet, QueryBuilder, ChangeTracker, ModelBuilder, migration engine, and database provider abstraction layer.
Quick Example
use *;
// Define entities
// Build queries
let blogs = db_set.query
.filter_column
.order_by_column
.skip.take
.to_list.await?;
// Aggregate
let avg = db_set.query.avg.await?;
let count = db_set.query.count.await?;
// Bulk operations
db_set.query.filter_column
.execute_delete.await?;
Modules
| Module | Description | EFCore Equivalent |
|---|---|---|
entity |
EntityType trait, EntityState, FromRow, GetKeyValues, EntitySnapshot |
Entity classes |
db_context |
DbContext trait, SaveChangesResult, save_one_set() |
DbContext |
db_set |
DbSet<T> — tracked entity collection |
DbSet<TEntity> |
query |
QueryBuilder<T> — LINQ-style fluent queries |
IQueryable<T> |
tracking |
ChangeTracker — property-level snapshots & state |
ChangeTracker |
relations |
BelongsTo<T>, HasMany<T>, HasOne<T>, DeleteBehavior |
Navigation properties |
model_builder |
ModelBuilder, EntityTypeBuilder, PropertyBuilder |
Fluent API |
migration |
MigrationEngine, model diff, Up/Down SQL generation |
Migration system |
provider |
DatabaseProvider, SqlGenerator, AsyncConnection, DbValue |
Provider abstraction |
error |
LrefError enum with 12 error variants |
Exception hierarchy |
cache |
DbCache — Identity Map entity cache |
— |
Traits
Core Entity Traits
Session / Provider
QueryBuilder API
// Filtering
query.filter_column
.filter_in
.filter_is_null
.filter_is_not_null
.filter_between
// Ordering & pagination
.order_by_column
.order_by_desc_column
.skip.take
// JOIN & grouping
.inner_join
.left_join
.group_by
.having
// Include navigation
.include_named
.include_with_join
// Terminal (execute)
.to_list.await? // Vec<T>
.first.await? // T
.first_or_default.await? // Option<T>
.count.await? // i64
.any.await? // bool
.sum.await? // f64
.avg.await? // f64
.min.await? // Option<String>
.max.await? // Option<String>
// Bulk operations
.execute_update.set_column.execute.await? // u64
.execute_delete.await? // u64
Database Provider Abstraction
The core crate defines traits. Provider crates implement them:
// SqlGenerator — dialect-specific SQL
// AsyncConnection — typed parameter execution
License
MIT — see LICENSE