Long post about all the steps I did can be found here: How I managed to connect from Mono in Linux to Oracle
If you are using
ServiceStack.OrmLite it is extremely easy in the end:
Attention! This solution might bring problems with it if you need timezone aware TimeStamps and TimeSpans in Oracle. Use it with caution.
After a lot of searching, the simplest solution was to modify
ServiceStack.OrmLite.Oracle to use Oracle's manged driver. For it to work, I had to remove the
OracleTimestampConverter, because Oracle's managed driver doesn't have the
GetClientInfo function in the
OracleGlobalization class. The code changes can be seen on GitHub. I've also published these changes as a package on NuGet.
The beauty of this solution is that you don't need anything extra anymore. You can take for instance my Ubuntu-mono Docker image, configure your driver and ConnectionString in
<system.data> <DbProviderFactories> <remove invariant="Oracle.ManagedDataAccess.Client" /> <!-- If any should be in the machine.config --> <add name="Oracle Data Provider for .NET" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=184.108.40.206, Culture=neutral" /> </DbProviderFactories> </system.data> <connectionStrings> <clear /> <add name="OracleContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="DATA SOURCE=<IP_ADDRESS>:1521/XE;PASSWORD=<PASSWORD>;USER ID=<USER_ID>;Connection Timeout=600;Validate Connection=true" /> </connectionStrings>
... and it is WORKING!