EntityFrameworkCore.ClickHouse
1.0.0
dotnet add package EntityFrameworkCore.ClickHouse --version 1.0.0
NuGet\Install-Package EntityFrameworkCore.ClickHouse -Version 1.0.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="EntityFrameworkCore.ClickHouse" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add EntityFrameworkCore.ClickHouse --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: EntityFrameworkCore.ClickHouse, 1.0.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 EntityFrameworkCore.ClickHouse as a Cake Addin #addin nuget:?package=EntityFrameworkCore.ClickHouse&version=1.0.0 // Install EntityFrameworkCore.ClickHouse as a Cake Tool #tool nuget:?package=EntityFrameworkCore.ClickHouse&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
<div align="center"> <img src="https://raw.githubusercontent.com/denis-ivanov/EntityFrameworkCore.ClickHouse/master/Logo.png" /> </div>
ClickHouse provider for Entity Framework Core
Quick start
- Create console app
- Install the necessary packages
dotnet add package EntityFrameworkCore.ClickHouse
dotnet add package Spectre.Console.Cli
class MyFirstTable
{
public uint UserId { get; set; }
public string Message { get; set; }
public DateTime Timestamp { get; set; }
public float Metric { get; set; }
}
class QuickStartDbContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.UseClickHouse("Host=localhost;Protocol=http;Port=8123;Database=QuickStart");
}
public DbSet<MyFirstTable> MyFirstTable { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var entityTypeBuilder = modelBuilder.Entity<MyFirstTable>();
entityTypeBuilder.Property(e => e.UserId).HasColumnName("user_id");
entityTypeBuilder.Property(e => e.Message).HasColumnName("message");
entityTypeBuilder.Property(e => e.Timestamp).HasColumnName("timestamp");
entityTypeBuilder.Property(e => e.Metric).HasColumnName("metric");
entityTypeBuilder.HasKey(e => new { e.UserId, e.Timestamp });
entityTypeBuilder.ToTable("my_first_table", table => table
.HasMergeTreeEngine()
.WithPrimaryKey("user_id", "timestamp"));
}
}
class Program
{
static async Task Main(string[] args)
{
await using var context = new QuickStartDbContext();
await context.Database.EnsureCreatedAsync();
await context.MyFirstTable.AddRangeAsync(
new MyFirstTable
{
UserId = 101,
Message = "Hello, ClickHouse!",
Timestamp = DateTime.Now,
Metric = -1f
},
new MyFirstTable
{
UserId = 102,
Message = "Insert a lot of rows per batch",
Timestamp = DateTime.Now.AddDays(-1),
Metric = 1.41421f
},
new MyFirstTable
{
UserId = 102,
Message = "Sort your data based on your commonly-used queries",
Timestamp = DateTime.Today,
Metric = 2.718f
},
new MyFirstTable
{
UserId = 101,
Message = "Granules are the smallest chunks of data read",
Timestamp = DateTime.Now.AddSeconds(5),
Metric = 3.14159f
});
await context.SaveChangesAsync();
var data = context.MyFirstTable.OrderBy(e => e.Timestamp).ToArray();
var table = new Table()
.AddColumns(
new TableColumn("user_id").RightAligned(),
new TableColumn("message").LeftAligned(),
new TableColumn("timestamp").RightAligned(),
new TableColumn("metric").RightAligned());
Array.ForEach(data, d => table.AddRow(
d.UserId.ToString(),
d.Message,
d.Timestamp.ToString(CultureInfo.InvariantCulture),
d.Metric.ToString(CultureInfo.InvariantCulture)));
AnsiConsole.Write(table);
}
}
┌─────────┬────────────────────────────────────────────────────┬─────────────────────┬─────────┐
│ user_id │ message │ timestamp │ metric │
├─────────┼────────────────────────────────────────────────────┼─────────────────────┼─────────┤
│ 102 │ Insert a lot of rows per batch │ 04/29/2024 21:05:26 │ 1.41421 │
│ 102 │ Sort your data based on your commonly-used queries │ 04/30/2024 00:00:00 │ 2.718 │
│ 101 │ Hello, ClickHouse! │ 04/30/2024 21:05:26 │ -1 │
│ 101 │ Granules are the smallest chunks of data read │ 04/30/2024 21:05:31 │ 3.14159 │
└─────────┴────────────────────────────────────────────────────┴─────────────────────┴─────────┘
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net9.0
- ClickHouse.Client (>= 7.9.1)
- Microsoft.EntityFrameworkCore (>= 9.0.0)
- Microsoft.EntityFrameworkCore.Abstractions (>= 9.0.0)
- Microsoft.EntityFrameworkCore.Relational (>= 9.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on EntityFrameworkCore.ClickHouse:
Repository | Stars |
---|---|
IoTSharp/IoTSharp
IoTSharp is an open-source IoT platform for data collection, processing, visualization, and device management.
|
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 52 | 11/22/2024 |
0.0.22 | 379 | 11/7/2024 |
0.0.20 | 4,905 | 8/1/2024 |
0.0.19 | 2,395 | 7/19/2024 |
0.0.18 | 98 | 7/18/2024 |
0.0.17 | 103 | 7/16/2024 |
0.0.16 | 746 | 6/19/2024 |
0.0.15 | 1,433 | 4/30/2024 |
0.0.14 | 115 | 4/29/2024 |
0.0.13 | 531 | 4/8/2024 |
0.0.12 | 417 | 4/7/2024 |
0.0.11 | 152 | 4/7/2024 |
0.0.10 | 1,783 | 11/16/2023 |
0.0.9 | 14,750 | 4/12/2022 |
0.0.8 | 723 | 11/1/2021 |
0.0.7 | 567 | 8/29/2021 |
0.0.6 | 375 | 8/29/2021 |
0.0.5 | 3,171 | 2/3/2021 |
0.0.4 | 634 | 1/31/2021 |
0.0.3 | 388 | 1/26/2021 |
0.0.1 | 395 | 1/26/2021 |