Symbiotic_Micro_ORM_Net_Standard_x64 2.1.5

.NET Core 2.0 .NET Standard 2.0 .NET Framework 4.6.1
There is a newer version of this package available.
See the version list below for details.
Install-Package Symbiotic_Micro_ORM_Net_Standard_x64 -Version 2.1.5
dotnet add package Symbiotic_Micro_ORM_Net_Standard_x64 --version 2.1.5
<PackageReference Include="Symbiotic_Micro_ORM_Net_Standard_x64" Version="2.1.5" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Symbiotic_Micro_ORM_Net_Standard_x64 --version 2.1.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Symbiotic_Micro_ORM_Net_Standard_x64, 2.1.5"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Symbiotic_Micro_ORM_Net_Standard_x64 as a Cake Addin
#addin nuget:?package=Symbiotic_Micro_ORM_Net_Standard_x64&version=2.1.5

// Install Symbiotic_Micro_ORM_Net_Standard_x64 as a Cake Tool
#tool nuget:?package=Symbiotic_Micro_ORM_Net_Standard_x64&version=2.1.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Supported databases: Sql Server, Sql Azure, My Sql, Sqlite, Oracle, PostgreSql.

Small, Fast, Simple to use and understand.
This ORM strives to provide as much detailed information available in any exceptions that are thrown, and we encourage any feedback to improve developer support. In some cases we augment information to database vendor errors. In some cases labels are required in method calls to aid in problematic sql, for example Label="Query Managers", so if the sql throws an error, that lable will be in the exception to help the developer track down the problem call.

Fully disconnected, poco's can move across application boundaries from client to service layer and perform all crud actions. Perfect for 3-tier development. This ORM does not track changes to objects or cache anything inside a context object.
Supports transactions, and helps developers perform multiple database actions with-in a single transaction.

No inheritance requirements, uses either interface implementation or attributes to define the mapping of the object to the sql results.
No configuration files, and no crazy designers. Supports custom data type mapping from .net types to database types.

Parallel Load support, run multiple queries in parallel and returns the results when done, and the result sets are ordered as sent. Also supports execution of mixed Serial and Parallel working sets for complex database operations.
Allows developers to write sql for reading data, the ORM just maps the results to the object. The ORM does provide simple loads based on id for single objects. All queries use a wrapper to force usage of parameterized sql and actively checks for injection issues. Inserts, Updates and Deletes do not require any sql, this a dynamically built using the attributes. Updates support concurrency checks using a timestamp column and related poco property.

Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows
.NET Core netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1
.NET Standard netstandard2.0 netstandard2.1
.NET Framework net461 net462 net463 net47 net471 net472 net48
MonoAndroid monoandroid
MonoMac monomac
MonoTouch monotouch
Tizen tizen40 tizen60
Xamarin.iOS xamarinios
Xamarin.Mac xamarinmac
Xamarin.TVOS xamarintvos
Xamarin.WatchOS xamarinwatchos
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
3.2.1 162 1/29/2022
3.2.0-rc 128 10/20/2021
3.1.0 403 8/31/2020
3.1.0-rc 326 8/23/2020
3.0.0 691 1/15/2019
3.0.0-rc 505 1/13/2019
2.1.6 709 8/18/2018
2.1.5 789 8/8/2018
2.0.4 822 1/3/2018
2.0.2 893 9/12/2017

Added LoadAbstractItems methods, same as parallel versions but serial.
Rework of the create instance code.

Adding support for dynamic creation of IDatabaseTypesFactory with-out adding a reference to the Data provider library.
Not sure why I never added support for it as I have been doing this in the Symbiotic Helper for years.

Added ability to override the date used when setting row version property during creates and updates. Was using DateTime.Now, there is now a new method on the IDatabaseTypesFactory called ObtainCurrentDateTime() to provide the date and time.
It now defaults to DateTime.UtcNow but if you set IDatabaseTypesFactory.ObtainCurrentDateTimeDefaultsToUTC = false it will use DateTime.Now.
This is a change to be aware of, I feel the best default is to use DateTime.UtcNow.

Improving the DatabaseActionProcessor, also working on improving the unit tests.
The DatabaseActionProcessor simplifies performing mixed database operations. For example performing reads with writes under a shared transactions or mixing parallel and serial sets of operations while simplifying troubleshooting problems during development.
Fixed a couple missing usages of timeout in ObjectLoader.ObtainHierarchy.

More improvements to DatabaseActionProcessor. Added item isolation for errors created when processing actions. Added example unit test to demonstrate the process of isolating a specific action.

Working on simplifying unit tests. Will make separate unit test classes and corresponding classes and scripts to demonstrate the various types of functionality.
Example: SimpleCrudTests.cs, SimpleCrudTests.sql

Working on breaking up the unti test into smaller classes.
This will simplify the documentation of features and make it easier for a new developer to get started using Symbiotic.

For cases where the relation table method is used for relationships, if the child property is not a collection, the orm no longer loads all the children if multiple exist. The behavior now is to load the first child from the database.
Fixed a bug when a developer overrides the relation column names in the DatabaseRelationTable attribute. It was not honoring the override of parent column name.
Added unit tests to test relation column name overrides.

Replaced some regular collections with thread Concurrent related types.

Added DateTimeOffset to the types unit tests, to ensure DateTimeOffset is supported.

Discovered that some thrown errors while performing loads were throwing DatabaseWriteException. I created a new class to handle command processing and it now throws DatabaseWriteException for writes and DatabaseReadException for reads.

Discovered that when an object attempts to use encryption with-out implementing IObjectChangedSupport, the orm does not provide proper feedback. Now if the object does not implement , it will throw a InvalidEncryptionObjectException exception.
Finished breaking up the unit test into smaller classes.

Change implementations of IDatabaseTypesFactory.PropertyTypeToDatabaseType to throw UnmappedDotNetToDatabaseTypeException when a mapping is not found, was throwing an ArgumentException.
Modified RelationSqlBuilder to use parameters for the parent and child ids.
Changed DeprecatedItem.DeprecationId to an integer type.
Fixed a bug where items were manually created instead of using the IDatabaseTypesFactory.CreateSqlAppender
Reworked unit tests for Postgresql and guid ids.

Started on Nuget package. RC 2.1 built and deployed.

Removed build output folders to reduce size of Nuget package.