Symbiotic_Micro_ORM_Net_Standard_x64 3.0.0-rc

This is a prerelease version of Symbiotic_Micro_ORM_Net_Standard_x64.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Symbiotic_Micro_ORM_Net_Standard_x64 --version 3.0.0-rc                
NuGet\Install-Package Symbiotic_Micro_ORM_Net_Standard_x64 -Version 3.0.0-rc                
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_Micro_ORM_Net_Standard_x64" Version="3.0.0-rc" />                
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 3.0.0-rc                
#r "nuget: Symbiotic_Micro_ORM_Net_Standard_x64, 3.0.0-rc"                
#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_Micro_ORM_Net_Standard_x64 as a Cake Addin
#addin nuget:?package=Symbiotic_Micro_ORM_Net_Standard_x64&version=3.0.0-rc&prerelease

// Install Symbiotic_Micro_ORM_Net_Standard_x64 as a Cake Tool
#tool nuget:?package=Symbiotic_Micro_ORM_Net_Standard_x64&version=3.0.0-rc&prerelease                

Supported databases: Sql Server, Sql Azure, My Sql, Sqlite, Oracle, PostgreSql, Firebird, DB2/LUW

Capable of using the same poco objects for any database vendor.

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. labels are required in some method calls to aid in troubleshooting, 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 transaction.

No inheritance requirements, either use attributes or implement an interface to define the mapping of the object to the sql results.
No configuration files, no designers.

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 Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 is compatible.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 is compatible.  net462 is compatible.  net463 was computed.  net47 was computed.  net471 is compatible.  net472 is compatible.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
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 1,513 1/29/2022
3.2.0-rc 1,125 10/20/2021
3.1.0 1,628 8/31/2020
3.1.0-rc 1,399 8/23/2020
3.0.0 1,958 1/15/2019
3.0.0-rc 1,600 1/13/2019
2.1.6 1,906 8/18/2018
2.1.5 1,984 8/8/2018
2.0.4 2,033 1/3/2018
2.0.2 2,065 9/12/2017


Fixed issue in ObjectReflector.ObtainColumns was erroring to find table attributed, but should only be needed for oracle.

Added more overloads to IObjectWriter.Create calls to include labels. This label is added to any exception message to aid developers.

Modified sql builders for item sql selects to specify columns names rather than use *.

Added new relationship type. Uses the DatabaseRelationSingleObject attribute to provide the details.
Use this single use relation ship when you want to load a object property based on another a property which contains the unique id.
So if you object has a AddressId, and Address property. The orm could load the Address instance property based on the AddressId property.
     [DatabaseRelationSingleObjectAttribute(sourceTabelName: "Address", columnName: "AddressId", propertyName: "HomeAddressId")]
The orm will support loading these relationships in parallel.

Finishing support for DatabaseRelationSingleObject relationships.

Cleaned up the sql labels for the unit tests, they now include the test class name.

Added new unit tests classes "RelationshipsUsingRelationSingleObject" to test single object relationships.
Looking into supporting DB2.

Currently installing DB2 on the server and installing DB2 Data Studio.

About to give-up on DB2. Took two days to get the DB2 installed on the windows server and I can't get the Data Studio to connect to the server.
Never seen such crappy client tools. I ended up using Oracle Sql Developer for most of the work.

Working on DB2 support. Apparently DB2 does not support named parameters and binding. This has forced me to make some changes to get DB2 working.
Guid support is questionable. I managed to push the guids in, not sure of the level of support or performance at this point.

Still working on DB2 support. I have most of it working.
DB2 error messages suck, even inserting a null into a not null column gives you a cryptic error message.
Working on relationship unit tests for DB2, building the sql, and verifying in the database.
Should have DB2 support working in Symbiotic with-in a few days, but will still need the build the schema factory for use in the Symbiotic Helper.

DB2 database is passing all unit test.
Starting on DB2 Schema Factory to support Symbiotic Helper.

DB2 Schema Factory is working.
working on deployments.
I keep getting a error when connecting to DB2. But only on the deployed app. Everything work perfectly when running the app from Visual Studio 2017. in either debug or release builds.
System.ArgumentOutOfRangeException: Length cannot be less than zero.
Parameter name: length
  at IBM.Data.DB2.Core.DB2ConnPool.Open(DB2Connection connection, String& szConnectionString, DB2ConnSettings& ppSettings, Object& ppConn)
  at IBM.Data.DB2.Core.DB2Connection.Open()
  at FrozenElephant.Symbiotic.DataProviderDB2.DatabaseTypesFactoryDB2.CreateConnection()
  at FormDatabaseConnection.btnTestConnection_Click(Object sender, EventArgs e)

Working on Firebird database support, so far it's going good. Error messages suck though.
Updated the troubleshooting docs (Sql validation info).

Firbird database is passing all unit test.
Retesting all other databases with unit tests.
Improved unit tests.
Starting on Firebird Schema Factory to support Symbiotic Helper.

Added unit tests to test the various database providers schema factories.

Thanks to Dominic P. we discovered the reason the DB2/LUW wasn't working. It was missing the folder "clidriver". Unfortunately this fold is over 69MB!
Started on Nuget package. RC 3.0.0

Trying to resolve deployment issues related to DB2.
Working on Nuget package. RC 3.0.0