Kull.Data
6.1.0-beta4
See the version list below for details.
dotnet add package Kull.Data --version 6.1.0-beta4
NuGet\Install-Package Kull.Data -Version 6.1.0-beta4
<PackageReference Include="Kull.Data" Version="6.1.0-beta4" />
<PackageVersion Include="Kull.Data" Version="6.1.0-beta4" />
<PackageReference Include="Kull.Data" />
paket add Kull.Data --version 6.1.0-beta4
#r "nuget: Kull.Data, 6.1.0-beta4"
#:package Kull.Data@6.1.0-beta4
#addin nuget:?package=Kull.Data&version=6.1.0-beta4&prerelease
#tool nuget:?package=Kull.Data&version=6.1.0-beta4&prerelease
Kull.Data Database Access
This Library extends the .Net Standard DBA Classes like System.Data.Common.DbConnection or System.Data.Common.DbDataReader with some extension methods that makes them easiert to use. You can use this a very simple ORM Mapper as well, without the need of a full-bown Entity Framework. A good alternative is Dapper.
Install it using Nuget, Package "Kull.Data":
Some Examples
You always need to be using Kull.Data to use the extension methods.
Call a Stored Procedure
using (var con = Kull.Data.DatabaseUtils.GetConnectionFromConfig("SomeConfigConnstr"))
{
return con.CreateSPCommand("spGetSomeData")
.AddCommandParameter("NameOfParameter", 1)
.AddCommandParameter("NameofOtherPArameter", 2)
.AsCollectionOf<SomeClassName>() // As of v6, a C# 9 record can be used here
}
Call a Stored Procedure, but use default DataReader
System.Data.Common.DbCommand cmd = con.CreateSPCommand("spGetSomeData")
.AddCommandParameter("NameOfParameter", 1)
.AddCommandParameter("NameofOtherPArameter", 2);
using(var rdr = cmd.ExecuteReader())
{
rdr.Read();
return rdr.GetNInt16(2); // Use Kull.Data Extension method that handles null-values for you (No System.DBNull Checking anymore...)
}
Abstraction of Config
You can simple call Kull.Data.DatabaseUtils.GetConnectionFromConfig("NAMEOFCONNECTIONSTRING") and it will return your DbConnection.
It works in the following order:
- Look in System.Configuration.ConfigurationManager.ConnectionStrings (.Net Fx only)
- Look in System.Configuration.ConfigurationManager.AppSettings (.Net Fx only)
- Look in appsettings.json (.Net Core only)
- Look in Environment Variables
When looking into Environment Variables, the ones of Azure functions are the base. We support the following prefixes:
- No prefix, meaning just NAMEOFCONNECTIONSTRING in the example above
- SQLCONNSTR_
- SQLAZURECONNSTR_
- MYSQLCONNSTR_
- PostgreSQLCONNSTR_
- CUSTOMCONNSTR_
Other Feature: WrapperDataReader and ObjectDataReader
For SQL Bulk Copy or other things it can
be useful to pass C# Data as a DataReader. You can achieve that by using Kull.Data.DataReader.ObjectDataReader. If you need to add some columns
to a datareader, you can use Kull.Data.DataReader.WrappedDataReader.
Powershell Module
You can use the Kull.Data.Powershell Module to use some simple cmdlets that allow for querying stored procedures(queries with parameters easily.
Import-Module SqlServer # To load System.Data.SqlClient driver in Powershell 6.2+
Import-Module Kull.Data.Powershell
$allAssemblies = [appdomain]::currentdomain.GetAssemblies() | ForEach-Object { [IO.Path]::GetFileName($_.Location) } # we try to be ready when SqlServer Module uses Microsoft.Data.SqlClient
if($allAssemblies.Contains("System.Data.SqlClient.dll") -and -not $allAssemblies.Contains("Microsoft.Data.SqlClient.dll")){
$provider = "System.Data.SqlClient"
} else {
$provider = "Microsoft.Data.SqlClient"
}
if($firstLoad -and $provider -eq "System.Data.SqlClient"){
[System.Data.Common.DbProviderFactories]::RegisterFactory($provider, [System.Data.SqlClient.SqlClientFactory]::Instance)
}
else {
[System.Data.Common.DbProviderFactories]::RegisterFactory($provider, [Microsoft.Data.SqlClient.SqlClientFactory]::Instance)
}
$sqlcon = Connect-Database $connectionstring $provider
Send-DbCommand $sqlcon $commandText $parameters ([System.Data.CommandType]::StoredProcedure)
# Or, use Receive-DbData to get result list
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 is compatible. net471 was computed. net472 was computed. net48 is compatible. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7
- IsExternalInit (>= 1.0.1)
- TimeZoneConverter (>= 3.1.0)
-
.NETFramework 4.8
- IsExternalInit (>= 1.0.1)
- TimeZoneConverter (>= 3.1.0)
-
.NETStandard 2.0
- IsExternalInit (>= 1.0.1)
- Microsoft.Extensions.Configuration.Json (>= 2.0.0)
- TimeZoneConverter (>= 3.1.0)
-
.NETStandard 2.1
- IsExternalInit (>= 1.0.1)
- Microsoft.Extensions.Configuration.Json (>= 2.0.0)
- TimeZoneConverter (>= 3.1.0)
-
net6.0
- Microsoft.Extensions.Configuration (>= 6.0.0)
- Microsoft.Extensions.Configuration.Json (>= 6.0.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Kull.Data:
| Package | Downloads |
|---|---|
|
Kull.DatabaseMetadata
Package Description |
|
|
Kull.GenericBackend
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 10.1.0 | 284 | 12/5/2025 |
| 8.0.1 | 1,196 | 11/26/2023 |
| 8.0.1-alpha | 165 | 11/11/2023 |
| 6.1.3 | 595 | 5/7/2023 |
| 6.1.2 | 4,393 | 11/11/2022 |
| 6.1.1 | 771 | 10/21/2022 |
| 6.1.0 | 632 | 9/22/2022 |
| 6.1.0-beta8 | 689 | 7/30/2022 |
| 6.1.0-beta7 | 302 | 7/30/2022 |
| 6.1.0-beta6 | 337 | 7/15/2022 |
| 6.1.0-beta5 | 332 | 7/8/2022 |
| 6.1.0-beta4 | 337 | 7/8/2022 |
| 6.1.0-beta3 | 314 | 7/7/2022 |
| 6.1.0-beta2 | 331 | 7/7/2022 |
| 6.1.0-beta1 | 338 | 7/7/2022 |
| 6.0.5 | 1,680 | 6/22/2022 |
| 6.0.4 | 607 | 6/14/2022 |
| 6.0.3 | 2,191 | 3/21/2022 |
| 6.0.2 | 884 | 3/18/2022 |
| 6.0.1 | 888 | 1/12/2022 |