Mockapala.Export.SqlServer
0.1.0-alpha.2
dotnet add package Mockapala.Export.SqlServer --version 0.1.0-alpha.2
NuGet\Install-Package Mockapala.Export.SqlServer -Version 0.1.0-alpha.2
<PackageReference Include="Mockapala.Export.SqlServer" Version="0.1.0-alpha.2" />
<PackageVersion Include="Mockapala.Export.SqlServer" Version="0.1.0-alpha.2" />
<PackageReference Include="Mockapala.Export.SqlServer" />
paket add Mockapala.Export.SqlServer --version 0.1.0-alpha.2
#r "nuget: Mockapala.Export.SqlServer, 0.1.0-alpha.2"
#:package Mockapala.Export.SqlServer@0.1.0-alpha.2
#addin nuget:?package=Mockapala.Export.SqlServer&version=0.1.0-alpha.2&prerelease
#tool nuget:?package=Mockapala.Export.SqlServer&version=0.1.0-alpha.2&prerelease
<img align="left" src="https://raw.githubusercontent.com/Jonikyro/Mockapala/main/Images/logo_300x300.png" alt="Mockapala logo" width="90" />
Mockapala.Export.SqlServer
SQL Server exporter for Mockapala. Bulk-inserts generated test data into SQL Server using SqlBulkCopy for high-performance seeding.
Installation
dotnet add package Mockapala.Export.SqlServer
Usage
using Mockapala.Schema;
using Mockapala.Generation;
using Mockapala.Export.SqlServer;
// 1. Define schema
var schema = SchemaCreate.Create()
.Entity<Company>(e => e.Key(c => c.Id))
.Entity<Customer>(e =>
{
e.Key(c => c.Id);
e.Relation<Company>(c => c.CompanyId);
})
.Entity<Order>(e =>
{
e.Key(o => o.Id);
e.Relation<Customer>(o => o.CustomerId);
})
.Build();
// 2. Generate data
var generator = new DataGenerator();
var data = generator.Generate(schema, cfg => cfg
.Count<Company>(5)
.Count<Customer>(50)
.Count<Order>(200)
.Seed(42));
// 3. Export to SQL Server
var exporter = new SqlBulkCopyExporter();
exporter.ExportToDatabase(schema, data, "Server=localhost;Database=TestDB;Trusted_Connection=True;TrustServerCertificate=True;");
Note: The target tables must already exist in the database. The exporter does not create tables automatically.
Options
Configure the exporter via SqlBulkCopyExportOptions:
var exporter = new SqlBulkCopyExporter(new SqlBulkCopyExportOptions
{
UseDataReader = true, // Stream rows via IDataReader (lower memory) — default: true
BatchSize = 1000, // Rows per batch (0 = SqlBulkCopy default) — default: 0
QuoteIdentifiers = true, // Wrap table/column names in brackets — default: true
BulkCopyOptions = SqlBulkCopyOptions.KeepIdentity, // Preserve generated IDs — default: KeepIdentity
TableNameResolver = type => type.Name, // Custom table name mapping — default: type name
});
| Option | Default | Description |
|---|---|---|
UseDataReader |
true |
When true, streams rows via IDataReader for lower memory usage. When false, builds a DataTable per entity type. |
BatchSize |
0 |
Number of rows per batch. 0 uses the SqlBulkCopy default. |
QuoteIdentifiers |
true |
Wraps table and column names in [brackets]. |
BulkCopyOptions |
KeepIdentity |
SqlBulkCopyOptions flags passed to SqlBulkCopy. KeepIdentity preserves the IDs generated by Mockapala. |
TableNameResolver |
Type name | Func<Type, string> that maps an entity type to its destination table name. |
DefaultSchema |
null |
Default schema prefix for all tables (e.g. "dbo"). When null, no schema prefix is added. |
SchemaResolver |
null |
Func<Type, string?> that resolves the schema per entity type. Non-null return overrides DefaultSchema. |
Schema Prefix
var exporter = new SqlBulkCopyExporter(new SqlBulkCopyExportOptions
{
DefaultSchema = "dbo", // All tables: [dbo].[TableName]
});
Override per entity type:
var exporter = new SqlBulkCopyExporter(new SqlBulkCopyExportOptions
{
DefaultSchema = "dbo",
SchemaResolver = type => type == typeof(Order) ? "sales" : null, // [sales].[Order], [dbo].[Company], ...
});
Table and Column Names from Schema
The exporter respects ToTable and HasColumnName metadata defined in the Mockapala schema:
var schema = SchemaCreate.Create()
.Entity<Order>(e =>
{
e.Key(o => o.Id);
e.ToTable("orders");
e.Property(o => o.CustomerId).HasColumnName("customer_id");
})
.Build();
Priority: TableNameResolver (exporter option) > ToTable (schema) > type name.
Requirements
- .NET 10+
- A running SQL Server instance with pre-created tables matching your entity schema
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. |
-
net10.0
- Microsoft.Data.SqlClient (>= 5.2.2)
- Mockapala (>= 0.1.0-alpha.2)
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.1.0-alpha.2 | 99 | 2/18/2026 |