Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I ran a quick comparison of the different providers consisting of:</p> <ol> <li>Installation experience.</li> <li>Connectivity.</li> <li>Server Explorer experience.</li> <li>Updating from database experience (database first).</li> <li>Data type mappings (database first).</li> </ol> <hr/> <p>Here are the conclusions:</p> <p><b>1. Installation experience.</b></p> <p>Oracle's ODP.NET (beta 3): Complex installation of separate x86 and x64 versions, installers not designed for Windows. Fills system path (dangerously close to max length), does not install to standard folders (program files + appdata).</p> <p>Devart's DotConnect: Smooth installation, provider DLL is fully managed.</p> <p>DataDirect's Progress: Smooth installation, provider DLL is fully managed.</p> <p>OPENLINK: Seems to require server side installation, did not test further.</p> <p><b>2. Connectivity.</b></p> <p>Oracle's ODP.NET (beta 3): Complicated to configure, requires Oracle installation on client machine and either additional TSN file in Oracle installation or a long and complex connection string that looks like LISP/Scheme.<br/> <strong>Update:</strong> Couldn't find this in the documentation, however, connection string can also contain simple data source definition e.g. serverName:port/serviceName.</p> <p>Devart's DotConnect: Simple connection string + wizard.</p> <p>DataDirect's Progress: Simple connection string + wizard.</p> <p><b>3. Server Explorer experience.</b></p> <p>Oracle's ODP.NET (beta 3): Most powerful of the three, enables easy editing, viewing of keys and indexes.</p> <p>Devart's DotConnect: Viewing of tables and fields.</p> <p>DataDirect's Progress: Enables easy editing, viewing of keys and indexes.</p> <p><b>4. Updating from database experience (database first).</b></p> <p>Oracle's ODP.NET (beta 3): Straightforward.</p> <p>Devart's DotConnect: Shows tables from all schemas, no option to filter - makes finding tables exhausting.</p> <p>DataDirect's Progress: Straightforward.</p> <p><b>5. Data type mappings (database first).</b></p> <p>Oracle's ODP.NET (beta 3): Default mapping for number(1,0), number(2,0) and number(3,0) are wrong*. Can manually override for number(2,0) and number(3,0). Fixing for number(1,0) doesn't work (at least not on beta 3 - may have worked in beta 2).</p> <p><b>Update:</b> <i>Now that the release version is out (112030) this has been fixed. Some mappings are possible via <a href="https://forums.oracle.com/forums/thread.jspa?forumID=146&amp;threadID=2339638">section in app.config file</a>.</i></p> <p>Devart's DotConnect: Shows tables from all schemas, no option to filter - makes finding tables exhausting. Default mapping for binary float, binary double, timestamp with time zone, number(2,0), number(3,0) and number(4,0) are wrong*. Manual override should work - didn't check.</p> <p>DataDirect's Progress: Default mappings are OK*.</p> <p><b><i>(*) Mappings I expected:</i></b></p> <pre><code>DB Data Type .NET Data Type integer Decimal int Decimal smallint Decimal long String decimal Decimal rowid String float Decimal double Decimal binary float Single binary double Double char[40] String charvar[40] String natchar[40] String natcharvar[40] String natcharacter[40] String natcharactervar[40] String number Decimal numeric Decimal nvarchar2[40] String real Decimal date DateTime timestamp DateTime timestamplocal DateTime timestampzone DateTimeOffset xml String raw15 Binary raw16 Guid raw17 Int64 number(1,0) Boolean number(2,0) Byte or SByte number(3,0) Byte or SByte (accepted Int16 as OK too) number(4,0) Int16 number(5,0) Int16 (accepted Int32 as OK too) number(6,0) Int32 number(7,0) Int32 number(8,0) Int32 number(9,0) Int32 number(10,0) Int32 (accepted Int64 as OK too) number(11,0) Int64 number(15,0) Int64 number(16,0) Int64 number(17,0) Int64 number(18,0) Int64 number(19,0) Int64 (accepted Decimal as OK too) number(20,0) Decimal (would accept Int64 as OK too) number(21+,0) Decimal </code></pre> <p>If you want the database type to be able to store any number in the .NET type range then IntX requires a number(N,0) where Ceil(log10(2^X)) = N for storage**.</p> <pre><code>Bool (Int1) ==&gt; number(1,0) Byte (Int8) ==&gt; number(3,0) Int16, UInt16 ==&gt; number(5,0) Int32, UInt32 ==&gt; number(10,0) Int64 ==&gt; number(19,0) UInt64 ==&gt; number(20,0) </code></pre> <p>** Calculation assumes unsigned numbers, for signed numbers ceil(log(2^(X-1)).</p> <p>References for data type assumptions:<br/> <a href="http://www.techonthenet.com/oracle/datatypes.php">TECH on the Net</a><br/> <a href="http://www.devart.com/dotconnect/oracle/docs/DataTypeMapping.html">Devart</a><br/> <a href="http://docs.oracle.com/html/B28089_01/featTypes.htm#i1006604">Oracle</a></p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload