UDataset.Oracle 0.14.2

dotnet add package UDataset.Oracle --version 0.14.2
                    
NuGet\Install-Package UDataset.Oracle -Version 0.14.2
                    
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="UDataset.Oracle" Version="0.14.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="UDataset.Oracle" Version="0.14.2" />
                    
Directory.Packages.props
<PackageReference Include="UDataset.Oracle" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add UDataset.Oracle --version 0.14.2
                    
#r "nuget: UDataset.Oracle, 0.14.2"
                    
#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.
#:package UDataset.Oracle@0.14.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=UDataset.Oracle&version=0.14.2
                    
Install as a Cake Addin
#tool nuget:?package=UDataset.Oracle&version=0.14.2
                    
Install as a Cake Tool

UDataset.Oracle

UDataset.Oracle is an Oracle implementation for UDataset cross-database data access framework. It provides Oracle-specific implementations of core UDataset interfaces, enabling seamless data operations with Oracle databases.

Features

  • Enterprise-Grade Database: Full support for Oracle's advanced features and scalability
  • Rich Data Types: Comprehensive support for Oracle data types including JSON, XML, CLOB, BLOB, and RAW
  • Connection Pooling: Efficient connection pooling for high-performance applications
  • SQL Transformation: Automatic transformation for Oracle-specific SQL syntax (e.g., SYSDATE, NVL, ROWNUM)
  • Full UDataset Features: Complete implementation of all UDataset features including CRUD, transactions, and schema management
  • User Management: Oracle-specific user and permission management
  • Schema Management: Complete DDL operations for tables, indexes, constraints, and sequences
  • Advanced Features: Support for materialized views, partitioning, and PL/SQL integration

Installation

dotnet add package UDataset.Core
dotnet add package UDataset.Oracle

Quick Start

1. Register Provider

using UDataset.Core;
using UDataset.Oracle;

// Register Oracle provider at application startup
OracleBootstrapper.Register();

2. Create Connection

// Basic connection string
string connectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=myuser;Password=mypass;";

IConnection connection = ProviderFactory.CreateConnection("Oracle", connectionString);

3. Basic Operations

// Create table with JSON and XML support
var schemaManager = ProviderFactory.CreateSchemaManager("Oracle", connectionString);
var documentsTable = new Table("Documents")
    .WithAutoIncrementPK("DocId")
    .WithoutVersionControl();
documentsTable.Attributes.Add(new Column("Title", DataType.String) { Properties = { [ColumnProperty.Length] = 500 } });
documentsTable.Attributes.Add(new Column("Metadata", DataType.Json)); // JSON type
documentsTable.Attributes.Add(new Column("Content", DataType.Xml));    // XML type
documentsTable.Attributes.Add(new Column("CreatedDate", DataType.DateTime));
documentsTable.Attributes.Add(new Column("IsActive", DataType.Boolean));
schemaManager.Create(documentsTable);

// Insert data
var document = new Row("Documents")
{
    ["Title"] = "Document Title",
    ["Metadata"] = "{ \"author\": \"John\", \"tags\": [\"tag1\", \"tag2\"] }",
    ["Content"] = "<root><content>Document content</content></root>",
    ["CreatedDate"] = DateTime.UtcNow,
    ["IsActive"] = true
};
await connection.Create(document);

// Query data
var query = new QueryExpression("Documents");
query.Filter = "IsActive = @isActive AND CreatedDate > @minDate";
query.Parameters["isActive"] = true;
query.Parameters["minDate"] = DateTime.Now.AddDays(-30);
var results = await connection.Query(query);

Oracle-Specific Features

Boolean Type Handling

Oracle does not have a native BOOLEAN data type. UDataset automatically handles this conversion:

// Boolean values are stored as NUMBER(1) internally (0 or 1)
// UDataset automatically converts between C# bool and Oracle NUMBER(1)
var row = new Row("Users")
{
    ["IsActive"] = true  // Automatically converted to 1 in Oracle
};

JSON Data Type

Oracle 12c+ supports JSON data types with efficient querying:

// Create table with JSON column
var table = new Table("Configurations");
table.Attributes.Add(new Column("Config", DataType.Json));
schemaManager.Create(table);

// Query JSON data
var query = new QueryExpression("Configurations");
// Oracle supports JSON_VALUE, JSON_QUERY functions

XML Data Type

Full XML support with XMLTYPE:

// Create table with XML column
var table = new Table("Documents");
table.Attributes.Add(new Column("Content", DataType.Xml));
schemaManager.Create(table);

Auto-Increment with Sequences

Oracle uses SEQUENCE objects for auto-increment primary keys:

// UDataset automatically creates and manages sequences for auto-increment PKs
var table = new Table("Users")
    .WithAutoIncrementPK("UserId"); // Creates a sequence automatically
schemaManager.Create(table);

Use Cases

Oracle is ideal for:

  • Enterprise Applications: Large-scale enterprise applications requiring high reliability
  • High-Performance OLTP: Transactional workloads with high concurrency
  • Data Warehousing: Oracle's partitioning and materialized views for analytical processing
  • Financial Systems: Applications requiring ACID compliance and advanced security
  • Legacy Systems: Integration with existing Oracle-based infrastructure
  • Cloud Applications: Oracle Cloud, Autonomous Database, and Exadata

Compatibility

  • Oracle Database 12c and later
  • Oracle Cloud
  • Autonomous Transaction Processing
  • Autonomous Data Warehouse
  • .NET 8.0
  • Entity Framework Core compatibility (when used alongside)

Performance Characteristics

  • Connection Pooling: Efficient connection pool management for high-throughput scenarios
  • Batch Operations: Optimized batch inserts with parameter limits (max 1,000 parameters)
  • Materialized Views: Support for pre-computed query results
  • Partitioning: Efficient data partitioning for large tables
  • Index Types: Support for B-tree, Bitmap, Function-based indexes

Limitations

  • Parameter limit of 1,000 per query (Oracle constraint)
  • Boolean values stored as NUMBER(1) require type conversion
  • Database rename operations have specific constraints
  • Some Oracle features require additional licensing

Requirements

  • .NET 8.0
  • Oracle.ManagedDataAccess.Core 23.26.100

Dependencies

  • UDataset.Core
  • Oracle.ManagedDataAccess.Core 23.26.100
  • Dapper 2.1.66
  • System.Data.Common
  • System.Text.Json

Oracle SQL Syntax Transformations

UDataset automatically transforms common SQL functions to Oracle equivalents:

Standard SQL Oracle Notes
LEN() LENGTH() String length
SUBSTRING() SUBSTR() String extraction
GETDATE() SYSDATE Current date/time
ISNULL() NVL() Null coalescing
LIMIT n FETCH FIRST n ROWS ONLY Result limiting
OFFSET n LIMIT m OFFSET n ROWS FETCH NEXT m ROWS ONLY Pagination

For general usage examples and advanced features, please refer to UDataset.Core documentation.

Version History

0.14.0 (2026-08-06)

  • UPDATE bind variable names with safe prefix (fixes ORA-01745)
  • Boolean parameter values converted to 1/0 Int (fixes ORA-00932)
  • Aggregate results cast with explicit precision
  • WhenNotExists auto-increment PK bypass
  • Full regression passed: 8 functional groups, 0 failures

0.11.0 (2026-04-16)

  • Added DM (Dameng) and KingbaseES database support to UDataset framework
  • Note: KingbaseES support is experimental and not recommended for production use
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows 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
0.14.2 100 8/9/2026
0.14.1 96 8/9/2026
0.14.0 98 8/7/2026
0.13.0 105 5/7/2026
0.12.2 111 4/30/2026
0.12.1 108 4/29/2026
0.12.0 123 4/28/2026
0.11.3 123 4/23/2026
0.11.2 109 4/19/2026
0.11.1 111 4/17/2026
0.11.0 105 4/16/2026
0.10.4 138 3/28/2026
0.10.3 118 3/24/2026
0.10.2 118 3/24/2026
0.9.12 123 2/25/2026
0.9.11 125 2/8/2026
0.9.10 121 2/5/2026
Loading failed