UskokDB 2.1.1
dotnet add package UskokDB --version 2.1.1
NuGet\Install-Package UskokDB -Version 2.1.1
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="2.1.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add UskokDB --version 2.1.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: UskokDB, 2.1.1"
#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=2.1.1
// Install UskokDB as a Cake Tool
#tool nuget:?package=UskokDB&version=2.1.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
UskokDB
A simple C# ORM which adds extension methods on IDbConnection and DbConnection classes
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, enum, string, double, float, decimal, 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 example
//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 certain property and 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
NotMapped Attribute
You can ignore a specific property with this attribute
class Person {
[NotMapped]
public string FullName {get; set;}
public int Age {get; set;}
}
Json
You can configure the library to use json for unkown structs and classes this is however
bypassed if a speicifc way of converting is specified in the convert dictionary
//This sets the usage
ParameterHandler.UseJsonForUnknownClassesAndStructs = true;
//And here is an example with Newtonsoft.Json but you can use any library as you wish
ParameterHandler.JsonWriter = (object? someInstance) =>
someInstance == null? null : JsonConvert.SerializeObject(someInstance);
//If you return null, null value will be stored in the column
ParameterHandler.JsonReader = (string? jsonString, Type columnType) =>
jsonString == null? null : JsonConvert.DeserializeObject(jsonString, columnType);
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 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. |
.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 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Microsoft.CSharp (>= 4.7.0)
- System.Dynamic.Runtime (>= 4.3.0)
- System.Memory (>= 4.5.5)
-
net6.0
- No dependencies.
-
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.
Fixed enum types