EFCore.Kusto
0.1.0
dotnet add package EFCore.Kusto --version 0.1.0
NuGet\Install-Package EFCore.Kusto -Version 0.1.0
<PackageReference Include="EFCore.Kusto" Version="0.1.0" />
<PackageVersion Include="EFCore.Kusto" Version="0.1.0" />
<PackageReference Include="EFCore.Kusto" />
paket add EFCore.Kusto --version 0.1.0
#r "nuget: EFCore.Kusto, 0.1.0"
#:package EFCore.Kusto@0.1.0
#addin nuget:?package=EFCore.Kusto&version=0.1.0
#tool nuget:?package=EFCore.Kusto&version=0.1.0
EFCore.Kusto
A lightweight, extensible Entity Framework Core provider for translating LINQ queries into **Kusto Query Language (KQL) ** AKA Azure Data Explorer (ADX).
While I primarily built this to integrate with ASP.NET Core OData (v8+) for analytical workloads, it can be used standalone for any LINQ-to-KQL translation needs.
Table of Contents
- 1. Installation
- 2. Getting Started
- 3. Project Goals
- 4. Current Capabilities
- 5. Contributing
- 6. License
- 7. Disclaimer
1. Installation
Install the package from NuGet:
dotnet add package EFCore.Kusto
Or via csproj:
<ProjectReference Include="src/EFCore.Kusto/EFCore.Kusto.csproj" />
2. Getting Started
Register your DbContext with the Kusto provider and pick an authentication option:
builder.Services.AddDbContext<PropertyContext>((sp, options) => { options.UseKusto( clusterUrl: "https://<cluster>.kusto.windows.net", database: "<database>", kusto => kusto.UseManagedIdentity()); });- Use
UseManagedIdentity(clientId)for a user-assigned identity, or omit the client id for system-assigned identities. - Use
UseApplicationAuthentication(tenantId, clientId, clientSecret)for app registrations. - Use
UseTokenCredential(credential)to supply anyTokenCredential(e.g., one registered viaAddKustoManagedIdentityCredentialorAddKustoApplicationRegistration). - If no authentication option is configured, the provider falls back to
DefaultAzureCredentialwhen executing queries.
- Use
Optional: register shared credentials so they can be reused when building
DbContextoptions:builder.Services.AddKustoManagedIdentityCredential(clientId: "<client-id>"); // or builder.Services.AddKustoApplicationRegistration( tenantId: "<tenant-id>", clientId: "<client-id>", clientSecret: "<client-secret>");These helpers register a singleton
TokenCredentialyou can inject when callingUseTokenCredentialinsideAddDbContext.
3. Project Goals
- Provide a reliable LINQ-to-KQL translation layer.
- Integrate cleanly with ASP.NET Core OData (v8+).
- Offer predictable, debuggable SQL generation.
- Ensure correctness and performance for high‑volume analytical datasets.
- Remain lightweight with minimal runtime overhead.
4. Current Capabilities
Query Translation
This provider currently supports:
WherefiltersSelectprojections- Ordering (
OrderBy,ThenBy) - Pagination (
Skip,Take) - Basic join translation used by OData
$expand - Counts as used by OData
$count
OData Compatibility
EFCore.Kusto works well with:
$filter$select$orderby$count$skip,$top$expand(entity relationships)
If specific OData query shapes cause issues, they can be addressed case‑by‑case. Community reports are welcome.
5. Contributing
Contributions are welcome.
If you encounter a translation issue, please include:
- The LINQ expression (or OData URL if applicable).
- The expected KQL.
- The generated KQL (if available).
This helps isolate translation gaps quickly.
6. License
MIT License – simple, permissive, widely accepted.
EFCore.Kusto is free for commercial and open‑source use.
7. Disclaimer
While this provider is functional and under active development, it is not yet battle-tested in production environments.
If you encounter unexpected behavior, open an issue — the goal is full reliability for production workloads.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Azure.Identity (>= 1.13.0)
- Microsoft.Azure.Kusto.Data (>= 14.0.2)
- Microsoft.EntityFrameworkCore (>= 8.0.8)
- Microsoft.EntityFrameworkCore.Relational (>= 8.0.8)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 170 | 11/23/2025 |