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.
Install-Package Symbiotic_Micro_ORM_Net_Standard_x64 -Version 3.0.0
dotnet add package Symbiotic_Micro_ORM_Net_Standard_x64 --version 3.0.0
<PackageReference Include="Symbiotic_Micro_ORM_Net_Standard_x64" Version="3.0.0" />
paket add Symbiotic_Micro_ORM_Net_Standard_x64 --version 3.0.0
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 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
- System.Data.Common (>= 4.3.0)
This package is not used by any popular GitHub repositories.