SchemaSaurus.Oracle
1.4.6
dotnet add package SchemaSaurus.Oracle --version 1.4.6
NuGet\Install-Package SchemaSaurus.Oracle -Version 1.4.6
<PackageReference Include="SchemaSaurus.Oracle" Version="1.4.6" />
<PackageVersion Include="SchemaSaurus.Oracle" Version="1.4.6" />
<PackageReference Include="SchemaSaurus.Oracle" />
paket add SchemaSaurus.Oracle --version 1.4.6
#r "nuget: SchemaSaurus.Oracle, 1.4.6"
#:package SchemaSaurus.Oracle@1.4.6
#addin nuget:?package=SchemaSaurus.Oracle&version=1.4.6
#tool nuget:?package=SchemaSaurus.Oracle&version=1.4.6
SchemaSaurus
SchemaSaurus is a .NET library for capturing a complete, immutable snapshot of a relational database's structural metadata — tables, views, indexes, foreign keys, stored procedures, functions, sequences, and user-defined types — into a single, JSON-serializable object graph.
It is designed for tools that need a stable, provider-agnostic view of a database schema: code generators, ORM tooling, migration diffing, documentation generation, and schema visualization.
| Package | Version |
|---|---|
| SchemaSaurus.Metadata | |
| SchemaSaurus.SqlServer | |
| SchemaSaurus.PostgreSql | |
| SchemaSaurus.MySql | |
| SchemaSaurus.Oracle | |
| SchemaSaurus.Sqlite |
Features
- Immutable, JSON round-trippable model rooted at
DatabaseModelwith structural equality. - Provider-agnostic abstraction via
IDatabaseSchemaReader— a single API across every supported engine. - Rich metadata coverage — tables, columns, primary keys, unique constraints, check constraints, indexes, foreign keys, views, stored procedures, scalar and table-valued functions, sequences, user-defined types, and triggers.
- Filtering by schema, table, and object kind through
SchemaReaderOptions. - Visitor pattern (
DatabaseVisitor) for walking the model in code generators and analyzers. - Annotations on every metadata element for engine-specific extensions (collation, identity, extended properties, etc.).
- Multi-target —
netstandard2.0,net462,net8.0,net9.0, andnet10.0.
Supported Providers
| Package | Minimum Supported Server |
|---|---|
SchemaSaurus.SqlServer |
SQL Server 2016 (13.x) or later, Azure SQL Database, Azure SQL Managed Instance |
SchemaSaurus.PostgreSql |
PostgreSQL 12 or later |
SchemaSaurus.MySql |
MySQL 5.7 or later, MariaDB 10.2 or later |
SchemaSaurus.Oracle |
Oracle Database 12c (12.1) or later |
SchemaSaurus.Sqlite |
SQLite 3.31.0 or later |
All providers depend on the shared SchemaSaurus.Metadata package, which defines the model and abstractions.
Installation
Install the metadata package plus the provider for your target engine:
dotnet add package SchemaSaurus.Metadata
dotnet add package SchemaSaurus.SqlServer
Quick Start
using SchemaSaurus.Metadata;
using SchemaSaurus.Metadata.Provider;
using SchemaSaurus.SqlServer;
IDatabaseSchemaReader reader = new SqlServerSchemaReader();
DatabaseModel model = await reader.ReadAsync("Server=.;Database=AdventureWorks;Integrated Security=true;TrustServerCertificate=true");
Console.WriteLine($"{model.DatabaseName} ({model.Provider} {model.ServerVersion})");
Console.WriteLine($"Tables: {model.Tables.Count}, Views: {model.Views.Count}");
Filtering
var options = new SchemaReaderOptions
{
Schemas = ["dbo", "Sales"],
Tables = ["Customer", "Sales.Orders"],
IncludeStoredProcedures = false,
IncludeScalarFunctions = false,
};
var model = await reader.ReadAsync(connectionString, options);
Tables entries may be schema qualified ("Sales.Orders"), which pins the table to that
schema; the first dot separates the schema from the table name. Unqualified entries
("Customer") match that name in any schema.
Names are passed to the database as written and compared with its own identifier rules.
A PostgreSQL table created unquoted as Sales.Orders is stored as sales.orders and has
to be filtered with that spelling; quoted identifiers keep their case.
JSON Serialization
The model uses source-generated System.Text.Json serialization via MetadataJsonContext for AOT-friendly, allocation-light round-tripping.
using System.Text.Json;
using SchemaSaurus.Metadata;
string json = JsonSerializer.Serialize(model, MetadataJsonContext.Default.DatabaseModel);
DatabaseModel restored = JsonSerializer.Deserialize(json, MetadataJsonContext.Default.DatabaseModel)!;
Command Line Export
Install SchemaSaurus as a .NET tool, then use the export command to capture database metadata as JSON.
dotnet tool install --global SchemaSaurus
Write JSON to a file with -o / --output:
SchemaSaurus export -c "Server=.;Database=AdventureWorks;Integrated Security=true;TrustServerCertificate=true" -p SqlServer -o .\schema.json
When --output is omitted, JSON is written to stdout for piping or redirection:
SchemaSaurus export -c "Data Source=.\sample.db" -p SQLite | jq .databaseName
Supported providers are SqlServer, PostgreSQL, MySQL, Oracle, and SQLite.
Filter the exported metadata with --schema and --table, and exclude object types with boolean switches:
SchemaSaurus export -c "Server=.;Database=AdventureWorks;Integrated Security=true;TrustServerCertificate=true" -p SqlServer -o .\schema.json --schema dbo --table Customer --table Sales.Orders --exclude-stored-procedures --exclude-sequences
Available exclusion switches are --exclude-views, --exclude-stored-procedures, --exclude-scalar-functions, --exclude-table-valued-functions, --exclude-sequences, and --exclude-user-defined-types.
Visitor
Walk the model to drive code generation or analysis:
public sealed class TableLogger : DatabaseVisitor
{
protected override void VisitTable(Table table)
{
Console.WriteLine($"{table.Name} ({table.Columns.Count} columns)");
base.VisitTable(table);
}
}
new TableLogger().VisitDatabase(model);
Model Overview
DatabaseModel is a flat container — every object carries its own SchemaQualifiedName, so consumers can group or filter by schema without traversing a hierarchy.
Tables→Columns,PrimaryKey,UniqueConstraints,CheckConstraints,Indexes,ForeignKeys,TriggersViews→Columns,DefinitionStoredProcedures/ScalarFunctions/TableValuedFunctions→Parameters,ReturnColumns,DefinitionSequences,UserDefinedTypes
Every metadata element implements IAnnotatable for engine-specific extension data.
License
MIT © LoreSoft
| Product | Versions 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 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 is compatible. 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 is compatible. 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. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Oracle.ManagedDataAccess.Core (>= 23.26.301)
- SchemaSaurus.Metadata (>= 1.4.6)
- System.Collections.Immutable (>= 10.0.12)
- System.Text.Json (>= 10.0.12)
-
net10.0
- Oracle.ManagedDataAccess.Core (>= 23.26.301)
- SchemaSaurus.Metadata (>= 1.4.6)
-
net8.0
- Oracle.ManagedDataAccess.Core (>= 23.26.301)
- SchemaSaurus.Metadata (>= 1.4.6)
- System.Collections.Immutable (>= 10.0.12)
- System.Text.Json (>= 10.0.12)
-
net9.0
- Oracle.ManagedDataAccess.Core (>= 23.26.301)
- SchemaSaurus.Metadata (>= 1.4.6)
- System.Collections.Immutable (>= 10.0.12)
- System.Text.Json (>= 10.0.12)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on SchemaSaurus.Oracle:
| Package | Downloads |
|---|---|
|
EntityFrameworkCore.Generator.Core
.NET Core command-line (CLI) tool to generate Entity Framework Core source files. |
GitHub repositories
This package is not used by any popular GitHub repositories.