Description
Dashing aims to be a strongly typed data access layer that is built with productivity and performance in mind.
Dashing alternatives and similar packages
Based on the "ORM" category.
Alternatively, view Dashing alternatives based on common mentions on social networks and blogs.
-
TypeORM
Data-Mapper ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, WebSQL databases. Works in Node.js and Browser. -
Entity Framework
Object-relational mapper that enables .NET developers to work with relational data using domain-specific objects -
FreeSql
FreeSql is the ORM in .NetCore, .NetFramework, And Xamarin. It supports Mysql, Postgresql, SqlServer, Oracle, Sqlite, Odbc, 达梦, And MsAccess. -
Fluent NHibernate
Fluent, XML-less, compile safe, automated, convention-based mappings for NHibernate. -
LINQ to DB
The fastest LINQ database access library offering a simple, light, fast, and type-safe layer between your POCO objects and your database. -
Dapper Extensions
Small library that complements Dapper by adding basic CRUD operations (Get, Insert, Update, Delete) for your POCOs -
Entity Framework 6
Object-relational mapper that enables .NET developers to work with relational data using domain-specific objects -
NPoco
Simple microORM that maps the results of a query onto a POCO object. Based on Schotime's branch of PetaPoco -
SmartSql
SmartSql = MyBatis + Cache(Memory | Redis)+ ZooKeeper + R / W Splitting + Dynamic Repository .... -
SQLProvider
A general F# SQL database erasing type provider, supporting LINQ queries, schema exploration, individuals, CRUD operations and much more besides. -
MongoDB Repository pattern implementation
Repository abstraction layer on top of Official MongoDB C# driver -
DbExtensions
Data-access framework with a strong focus on query composition, granularity and code aesthetics. -
NReco.Data
Lightweight provider-independent DAL for .NET Core: abstract query, SQL command builder, CRUD operations, object mapping.. -
MicroLite ORM
MicroLite ORM is a micro Object Relational Mapper for the .NET framework. It is designed to be easy to use, extensible and testable. -
Linq.Expression.Optimizer
System.Linq.Expression expressions optimizer. -
EntityFramework.DatabaseMigrator
EntityFramework.DatabaseMigrator is a WinForms utility to help manage Entity Framework 6.0+ migrations. -
Entity Framework Core
Object-relational mapper that enables .NET developers to work with relational data using domain-specific objects -
LLBLGen Pro
Entity Modeling solution for Entity Framework, NHibernate, Linq to SQL and its own ORM framework: LLBLGen Pro Runtime Framework. [$][Free Lite version]
Get performance insights in less than 4 minutes
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of Dashing or a related project?
Popular Comparisons
README
Dashing is a simple to use mini ORM built on top of Dapper. It aims to be a strongly typed data access layer that is built with productivity and performance in mind.
📘 Documentation for v2 is available to view here.
Features
- Convention over Configuration with code-first minimal configuration
- SQL-like strongly typed query syntax
- Paging support
- Eager loading of relationships
- Change tracking
- CRUD operations
- Default transactional behaviour
- Schema generation/migrations
- Dynamic method generation and caching
- Builds on top of Dapper
- Multiple database support (SQL Server/MySql right now)
- In-memory engine for testing
Examples
Get Entity
var post = await session.GetAsync<Post>(123);
var post = await session.Query<Post>().SingleAsync(p => p.PostId == 123);
Insert
var post = new Post { Title = "Hello World" };
await session.InsertAsync(post);
Console.WriteLine(post.PostId); // 123
Update changed properties only
var post = await session.GetAsync<Post>(123);
post.Title = "New Title";
await session.SaveAsync(post); // update [Posts] set [Title] = @P1 where [PostId] = @P2
Delete
await session.DeleteAsync(post);
Eager fetching of related entities
var posts = await session.Query<Post>()
.Fetch(p => p.Author)
.Fetch(p => p.Tags)
.FetchMany(p => p.Comments).ThenFetch(c => c.Author)
.Where(p => p.Category == ".Net ORM")
.OrderByDescending(p => p.CreatedDate)
.ToListAsync();
Paging
var firstPage = await session.Query<Post>().AsPagedAsync(0, 10);
Count/Any
var numberPosts = await session.Query<Post>().CountAsync(p => p.Author.UserId == userId);
var hasAuthored = await session.Query<Post>().AnyAsync(p => p.Author.UserId == userId);
Bulk update entity
await session.UpdateAsync<Post>(p => p.IsArchived = true, p => p.Author.UserId == 3);
// update [Posts] set [IsArchived] = @P1 where [AuthorId] = @P2
Bulk delete
await session.DeleteAsync<Post>(p => p.IsArchived);
Drop to Dapper
await session.Dapper.QueryAsync("select 1 from Foo");
Inspect changes
post.Title = "New";
session.Inspect(post).IsPropertyDirty(p => p.Title);
var oldTitle = session.Inspect(post).GetOldValue(p => p.Title); // Old
Migrate database to match latest code
./dash migrate -a "<path to assembly>" -t "<configuration type full name>" -c "<connection string>"
Who uses Dashing?
Dashing has been developed over the last 4 years at Abstract Leap and is in use at nearly all of our clients. It's used to execute millions of queries every week.
Feature requests (and voting for them) available at Feathub