UskokDB 1.1.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package UskokDB --version 1.1.0
NuGet\Install-Package UskokDB -Version 1.1.0
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="UskokDB" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add UskokDB --version 1.1.0
#r "nuget: UskokDB, 1.1.0"
#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.
// Install UskokDB as a Cake Addin
#addin nuget:?package=UskokDB&version=1.1.0

// Install UskokDB as a Cake Tool
#tool nuget:?package=UskokDB&version=1.1.0

UskokDB

A simple C# ORM which adds extension methods on IDbConnection and DbConnection interfaces

Quering

Lets supose we have a model specified like:
class Person
{
    public string Name { get; set; }
    public string LastName { get; set; }
}

//Getting a connection instance from some factory
IDbConnection connection = SomeConnectionFactory.CreateConnection();

Sync quering

List<dynamic> people = connection.Query("Select * From people Where name=@Name", new { 
    Name = "Vuk" 
})
List<Person> people = connection.Query<Person>("Select * From people Where name=@Name", new { 
    Name = "Vuk" 
})
dynamic person = connection.QuerySingle("Select * From people Where name=@Name", new { 
    Name = "Vuk" 
})
Person person = connection.QuerySingle<Person>("Select * From people Where name=@Name", new { 
    Name = "Vuk" 
})

Async Quering

List<dynamic> people = await connection.QueryAsync("Select * From people Where name=@Name", new { 
    Name = "Vuk" 
})
List<Person> people = await connection.QueryAsync<Person>("Select * From people Where name=@Name", new { 
    Name = "Vuk" 
})
dynamic person = await connection.QuerySingleAsync("Select * From people Where name=@Name", new { 
    Name = "Vuk" 
})
Person person = await connection.QuerySingleAsync<Person>("Select * From people Where name=@Name", new { 
    Name = "Vuk" 
})

IParamterConverter

The ParameterHandler class has a static dictionary Dictionary<Type, IParamterConverter> ParamterConverters which is used as a map to create db values from custom types the prime example of this is Guid demostrated here

[typeof(Guid)] = new DefaultParamterConverter<Guid, string>((guid) => guid.ToString(), Guid.Parse, Guid.Empty.ToString().Length)

The DefaultParamterConverter takes in a function of when writing to a database and a function when reading it along side with the int? maxLength and string? typeName, maxLength is used to determine the max length in case the writen type is string in which case this is and it is Guid.Empty.ToString().Length and typeName is used in the extension library UskokDB.MySql to know what type should be written in case of a for example DateTime this parameter would be DATETIME.

Note! Primtive types cannot be changed (int, uint, char, bool, short, ushort, enums, etc...)

IParamterConverter is used for the type Guid so that the model can be represented like this

class Person 
{
    public Guid Id;
    public string Name;
    public string LastName;
}

This can be just any type so lets create an exampel

//This is a kind of dumb example but shows the way it used
const int MaxNameLength = 20;
class NameClass
{
    public string Value; 
}
class Person 
{
    public Guid Id;
    public NameClass Name;
    public NameClass LastName;
}
ParameterHandler.ParamterConverters[typeof(NameClass)] = new DefaultParamterConverter<NameClass, string>(nameClass => nameClass.Value, (str) => new NameClass { Value = str }, MaxNameLength)

Column Attribute

You can use the column attribute in order to specify a name for a certian property ad here is an example of this

class Person {
    [Column("name")]
    public string FullName {get; set;}
}

Person p = connection.QuerySingle<Person>("Select * From people where name='Somename'")

As you can see the column name in the table is name but we can still name the property as we wish as long as we specify the actuall name of the column with the attribute

Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net7.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on UskokDB:

Package Downloads
UskokDB.MySql

MySql helper for UskokDB

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.1.2 45 5/25/2024
2.1.1 258 8/31/2023
2.1.0 187 8/7/2023
2.0.1 120 7/28/2023
2.0.0 190 7/28/2023
1.7.0 210 7/19/2023
1.6.0 152 4/29/2023
1.5.0 274 4/21/2023
1.4.0 260 4/15/2023
1.3.0 154 4/13/2023
1.2.0 271 4/12/2023
1.1.0 150 4/10/2023
1.0.0 176 4/9/2023

Added documentation