Symbiotic_x64 4.0.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package Symbiotic_x64 --version 4.0.2
NuGet\Install-Package Symbiotic_x64 -Version 4.0.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Symbiotic_x64" Version="4.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Symbiotic_x64 --version 4.0.2
#r "nuget: Symbiotic_x64, 4.0.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Symbiotic_x64 as a Cake Addin
#addin nuget:?package=Symbiotic_x64&version=4.0.2

// Install Symbiotic_x64 as a Cake Tool
#tool nuget:?package=Symbiotic_x64&version=4.0.2

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.
.  Lazy initialization support, with child sql override.
.  Change trackng support to history tables.
.  Supported databases: Sql Server / Express / Local DB, 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.
. Password one way hashing support.
. Field level encryption with auto decrypt upon load ability.
. Processing intercept support, BeforeInsert, BeforeUpdate, BeforeDelete, AfterLoad.

Product Compatible and additional computed target framework versions.
.NET Framework net35 is compatible.  net40 was computed.  net403 was computed.  net45 was computed.  net451 is compatible.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
4.0.3 153 4/9/2014
4.0.2 47 3/20/2014
4.0.1 47 2/21/2014
3.1.0.3 43 6/3/2013
3.1.0.2 42 3/6/2013
3.1.0.1 42 2/9/2013
3.1.0 49 2/1/2013
3.0.0.2 43 12/20/2012
3.0.0.1 44 12/19/2012
3.0.0 47 12/19/2012
2.6.4 46 11/9/2012
2.6.3 46 11/2/2012
2.6.2 52 10/30/2012
2.6.1 48 10/25/2012

Version: 4.0.1.0

29-Aug-2013
Code analysis fixes.

09-Sep-2013
Fixed a bug in TraceSql, mislabeled parameter name and values.

01-Jan-2014
Started adding support for encryption,
adding new attributes HashedFieldAttribute and EncryptedFieldAttribute,
hashed field provides a one way hash for fields like passwords,
Encrypted fields will encrypt strings prior to insert and will allow the developer to automatically unencrypt or remain encrypted when loaded.

06-Jan-2014
Field one way hashing, and field encryption is working.
Fixed a bug in the add parameters when setting parameter value to nothing, parameter must be set with DBNull.

26-Jan-2014
Change ObjectHierarchyWriter.DeleteHierarchy which calls DeleteChildren which in turn calls Delete (Non hierarchical) to use to DeleteHierarchy instead.
The same done for InsertUpdate and Creates also.
This will support child hierarchy objects.
Existing unit tests all passed.

29-Jan-2014
Found some places where the ORM was not explicitly closing the connection, I change the code to call close.
Only seems to be a problem when creating a lot of connections quickly.
Apparently the garbage collection is too slow.

04-Feb-2014
Reviewed all code for needing explicit connection close. Add all cases as needed.
All unit test passed.

08-Feb-2014
When someone deletes a hierarchical object that has a relation where the deferred load is true the delete fails (foreign key constraints on relation table).
This is because the data is not present on the object and the ORM assumes there are no relationships or children to remove.

Changing the ORM automatically load the relations and children.


15-Feb-2014
Ran unit tests for SQLite, had to make a few fixes. In cases of IObjectChangedSupport and when we skipped due to an unchanged record, we did not close the transaction, apparently SQLite locks the database file until the Rollback.
These issues are due to the changes for explicit closes, SQLite is just more picky which makes sense as it’s a file database.
This does improve the ORM performance with SQLite, typically when I run the unit tests all at once, many write tests would fail as it only support one write.
Now they all pass, seems SQLite know to wait for a pending close, before attempting another.

I also tested Symbiotic with Local DB (Sql Server compact/express), all tests passed, and seems to work fine.

Found a few cases where ISqlQuery parameter were not beign added for (ObtainHierarchy, ObtainItems), have never needed it but its available now.

Added checks for sql injection to the sql wrapper class: SqlQuerySimple

19-March-2014
Minor changes to IDatabaseTypesFactory to supoport code generator