Symbiotic ORM
The main goal of this .NET library is the simplify data access for
object oriented programmers. This library provides a simple way to
perform CRUD (create, read, update, delete) operations. It is not
expected to work for everyone or every application. Currently works
with Sql Server, My Sql, Oracle and Sqlite databases.
I wanted something that would be simple to use, understand, and have
very little impact on the code. With this library, you can have basic
object CRUD working in a few lines of code, and should require less
than an hour to understand the library usage.
I also wanted something that could easily be integrated into an
existing project.
The basic concept is that you add a few attributes to your objects
which explains the mapping to a database results column/s. You can also
implement IDatabaseDefineSupport to provide the mapping details.
There a two main objects used to work with the database. ObjectLoader
and ObjectWriter.
Performance seem to be fast or good IMO. Symbiotic can load 2000 hierarchal person objects in under 350 milliseconds on my 4/core i7 using sql server (note Sql-Server & Tests are running on the same machine). Each person object has 2 address items, 10 phones items, and 1 error item property. MySql seems to perform even better (Odd).
Code Examples
x86 Nuget link
x64 Nuget link
Nuget link (Old name)
Symbiotic 2.06.2 SDK
Symbiotic 2.06.3 SDK
Symbiotic 2.06.4 SDK
Symbiotic 3.0.0.0 SDK
Symbiotic 3.1.0.0 SDK
Symbiotic 3.1.0.1 SDK
Symbiotic 3.1.0.2 SDK
Example Schema Diagram
Example Object Diagram
Feature summary
- Small and simple to use and understand.
- Single file reference needed.
- Full object hierarchy CRUD support. Saves all object properties
and the relationships to related tables. Also supports collection
properties.
- Allows
developers to write sql as needed for reads. The design just maps the
results to the objects. Writes are tightly coupled to the database and
build on primary key constraints.
- No inheritance requirements, uses either interface implementation or attributes.
- Allows developers to modify the relation sql to further optimize loading of children.
- Sql Server bulk insert support.
- Database constraints tolerant.
- Lazy initialization support, with child sql override.
- Change trackng support to history tables.
- Supported databases: Sql Server, My Sql, Sqlite, Oracle.
- Built-in Performance tracking, implement IPerformanceTracking to allow performance tracking of all database actions.
- Optimistic concurrency support.
- No configuration files needed.
- Trace output of SQL statements and parameter values.
Copyright © 2011-2012 Frozen Elephant Inc.