Vitorm.Data
2.0.1-preview
See the version list below for details.
dotnet add package Vitorm.Data --version 2.0.1-preview
NuGet\Install-Package Vitorm.Data -Version 2.0.1-preview
<PackageReference Include="Vitorm.Data" Version="2.0.1-preview" />
paket add Vitorm.Data --version 2.0.1-preview
#r "nuget: Vitorm.Data, 2.0.1-preview"
// Install Vitorm.Data as a Cake Addin #addin nuget:?package=Vitorm.Data&version=2.0.1-preview&prerelease // Install Vitorm.Data as a Cake Tool #tool nuget:?package=Vitorm.Data&version=2.0.1-preview&prerelease
Vitorm.Data
Vitorm is a lightweight yet comprehensive ORM that strikes the perfect balance between simplicity and functionality.
Similar to Dapper in its lightweight design, Vitorm offers an easy-to-use, efficient interface for data access.
However, it doesn't stop there; Vitorm goes beyond basic ORM capabilities to provide a rich feature set akin to Entity Framework.
This means you get the best of both worlds: the performance and simplicity of Dapper with the robust features and flexibility of Entity Framework, making Vitorm an ideal choice for developers seeking a powerful yet streamlined ORM solution.
source address: https://github.com/VitormLib/Vitorm
Build | NuGet |
---|---|
Vitorm.Data Documentation
Vitorm.Data is a static class that allows you to use Vitorm without explicitly creating or disposing of a DbContext.
Installation
Before using Vitorm.Data, install the necessary package:
dotnet add package Vitorm.Data
dotnet add package Vitorm.Sqlite
Config settings
// appsettings.json
{
"Vitorm": {
"Data": [
{
"provider": "Sqlite",
"namespace": "App",
"connectionString": "data source=sqlite.db;"
}
]
}
}
Minimum viable demo
After configuring the
appsettings.json
file, you can directly perform queries without any additional configuration or initialization,Vitorm.Data
is that easy to use.
code address: Program_Min.cs
using Vitorm;
namespace App
{
public class Program_Min
{
static void Main2(string[] args)
{
// Query Records
var user = Data.Get<User>(1);
var users = Data.Query<User>().Where(u => u.name.Contains("li")).ToList();
}
// Entity Definition
[System.ComponentModel.DataAnnotations.Schema.Table("User")]
public class User
{
[System.ComponentModel.DataAnnotations.Key]
public int id { get; set; }
public string name { get; set; }
public DateTime? birth { get; set; }
public int? fatherId { get; set; }
}
}
}
Full Example
code address: Program.cs
using Vitorm;
namespace App
{
public class Program
{
static void Main(string[] args)
{
// #1 No need to init Vitorm.Data
// #2 Create Table
Data.TryDropTable<User>();
Data.TryCreateTable<User>();
// #3 Insert Records
Data.Add(new User { id = 1, name = "lith" });
Data.AddRange(new[] {
new User { id = 2, name = "lith", fatherId = 1 },
new User { id = 3, name = "lith", fatherId = 1 }
});
// #4 Query Records
{
var user = Data.Get<User>(1);
var users = Data.Query<User>().Where(u => u.name.Contains("li")).ToList();
var sql = Data.Query<User>().Where(u => u.name.Contains("li")).ToExecuteString();
}
// #5 Update Records
Data.Update(new User { id = 1, name = "lith1" });
Data.UpdateRange(new[] {
new User { id = 2, name = "lith2", fatherId = 1 },
new User { id = 3, name = "lith3", fatherId = 2 }
});
Data.Query<User>().Where(u => u.name.Contains("li"))
.ExecuteUpdate(u => new User { name = "Lith" + u.id });
// #6 Delete Records
Data.Delete<User>(new User { id = 1, name = "lith1" });
Data.DeleteRange(new[] {
new User { id = 2, name = "lith2", fatherId = 1 },
new User { id = 3, name = "lith3", fatherId = 2 }
});
Data.DeleteByKey<User>(1);
Data.DeleteByKeys<User, int>(new[] { 1, 2 });
Data.Query<User>().Where(u => u.name.Contains("li"))
.ExecuteDelete();
// #7 Join Queries
{
var query =
from user in Data.Query<User>()
from father in Data.Query<User>().Where(father => user.fatherId == father.id).DefaultIfEmpty()
where father != null
orderby user.id
select new { user, father };
var sql = query.ToExecuteString();
var users = query.ToList();
}
// #8 Transactions
{
using var dbContext = Data.DataProvider<User>().CreateSqlDbContext();
using var tran1 = dbContext.BeginTransaction();
dbContext.Update(new User { id = 4, name = "u4001" });
using (var tran2 = dbContext.BeginTransaction())
{
dbContext.Update(new User { id = 4, name = "u4002" });
// will rollback
}
using (var tran2 = dbContext.BeginTransaction())
{
dbContext.Update(new User { id = 4, name = "u4002" });
tran2.Rollback();
}
using (var tran2 = dbContext.BeginTransaction())
{
dbContext.Update(new User { id = 4, name = "u4003" });
tran2.Commit();
}
tran1.Commit();
}
// #9 Database Functions
{
// select * from User where IIF(t0.fatherId is not null, true, false);
var query = Data.Query<User>().Where(u => DbFunction.Call<bool>("IIF", u.fatherId != null, true, false));
var sql = query.ToExecuteString();
var userList = query.ToList();
}
}
// Entity Definition
[System.ComponentModel.DataAnnotations.Schema.Table("User")]
public class User
{
[System.ComponentModel.DataAnnotations.Key]
public int id { get; set; }
public string name { get; set; }
public DateTime? birth { get; set; }
public int? fatherId { get; set; }
}
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 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. |
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Vitorm.Data:
Package | Downloads |
---|---|
Vitorm.EntityGenerate
Generage Entity Type from Database |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.0.4 | 65 | 8/15/2024 |
2.0.3 | 96 | 8/9/2024 |
2.0.2 | 71 | 7/29/2024 |
2.0.1 | 82 | 7/22/2024 |
2.0.1-preview | 74 | 7/21/2024 |
2.0.0 | 72 | 7/14/2024 |
2.0.0-preview | 55 | 7/14/2024 |
1.1.0-preview | 57 | 7/14/2024 |