Kull.Data
6.1.0-beta6
See the version list below for details.
dotnet add package Kull.Data --version 6.1.0-beta6
NuGet\Install-Package Kull.Data -Version 6.1.0-beta6
<PackageReference Include="Kull.Data" Version="6.1.0-beta6" />
paket add Kull.Data --version 6.1.0-beta6
#r "nuget: Kull.Data, 6.1.0-beta6"
// Install Kull.Data as a Cake Addin #addin nuget:?package=Kull.Data&version=6.1.0-beta6&prerelease // Install Kull.Data as a Cake Tool #tool nuget:?package=Kull.Data&version=6.1.0-beta6&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. |
.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.GenericBackend
Package Description |
|
Kull.DatabaseMetadata
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
8.0.1 | 516 | 11/26/2023 |
8.0.1-alpha | 89 | 11/11/2023 |
6.1.3 | 306 | 5/7/2023 |
6.1.2 | 3,343 | 11/11/2022 |
6.1.1 | 603 | 10/21/2022 |
6.1.0 | 472 | 9/22/2022 |
6.1.0-beta8 | 409 | 7/30/2022 |
6.1.0-beta7 | 151 | 7/30/2022 |
6.1.0-beta6 | 171 | 7/15/2022 |
6.1.0-beta5 | 168 | 7/8/2022 |
6.1.0-beta4 | 173 | 7/8/2022 |
6.1.0-beta3 | 158 | 7/7/2022 |
6.1.0-beta2 | 162 | 7/7/2022 |
6.1.0-beta1 | 157 | 7/7/2022 |
6.0.5 | 1,372 | 6/22/2022 |
6.0.4 | 445 | 6/14/2022 |
6.0.3 | 1,706 | 3/21/2022 |
6.0.2 | 703 | 3/18/2022 |
6.0.1 | 695 | 1/12/2022 |
6.0.0 | 3,402 | 10/23/2021 |
6.0.0-beta9 | 766 | 9/28/2021 |
6.0.0-beta8 | 146 | 9/23/2021 |
6.0.0-beta7 | 264 | 9/10/2021 |
6.0.0-beta6 | 153 | 8/30/2021 |
6.0.0-beta5 | 150 | 8/30/2021 |
6.0.0-beta4 | 138 | 8/30/2021 |
6.0.0-beta3 | 155 | 8/30/2021 |
6.0.0-beta2 | 157 | 8/27/2021 |
6.0.0-beta1 | 157 | 8/27/2021 |
5.4.1 | 2,062 | 7/29/2021 |
5.4.0 | 1,812 | 4/13/2021 |
5.4.0-rc2 | 275 | 1/26/2021 |
5.4.0-rc1 | 464 | 9/24/2020 |
5.3.0 | 4,293 | 8/19/2020 |
5.2.1 | 3,049 | 4/30/2020 |
5.2.0 | 606 | 3/23/2020 |
5.2.0-beta1 | 425 | 1/9/2020 |
5.1.0 | 3,925 | 8/14/2019 |
5.0.3 | 692 | 11/22/2019 |
5.0.2 | 551 | 11/22/2019 |
5.0.1 | 608 | 11/22/2019 |
4.1.1 | 573 | 11/22/2019 |
2.0.4 | 557 | 11/22/2019 |