{"id":21528287,"url":"https://github.com/masesgroup/kefcore","last_synced_at":"2026-05-24T02:02:33.483Z","repository":{"id":37904841,"uuid":"457608357","full_name":"masesgroup/KEFCore","owner":"masesgroup","description":"Entity Framework Core provider for Apache Kafka™ — use Kafka as a distributed database, and more, with full LINQ support. Compatible with any Kafka™ wire-protocol broker.","archived":false,"fork":false,"pushed_at":"2026-05-20T21:07:29.000Z","size":54724,"stargazers_count":9,"open_issues_count":8,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-21T02:05:41.474Z","etag":null,"topics":["apache-kafka","c-sharp","confluent","confluent-kafka","database","dotnet","dotnet-core","dotnet-framework","dotnet-standard","entity-framework","kafka","kafka-cluster","kafka-streams","orm"],"latest_commit_sha":null,"homepage":"https://kefcore.masesgroup.com/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/masesgroup.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"masesgroup","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2022-02-10T02:55:00.000Z","updated_at":"2026-05-20T21:07:31.000Z","dependencies_parsed_at":"2024-02-27T09:05:25.313Z","dependency_job_id":"ae1cb200-b74f-484e-9116-bb3a297fe0c7","html_url":"https://github.com/masesgroup/KEFCore","commit_stats":{"total_commits":50,"total_committers":2,"mean_commits":25.0,"dds":"0.33999999999999997","last_synced_commit":"0a435b915f666229a20d916f61738ed9bc702d1d"},"previous_names":["masesgroup/entityframework4kafka"],"tags_count":68,"template":false,"template_full_name":null,"purl":"pkg:github/masesgroup/KEFCore","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masesgroup%2FKEFCore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masesgroup%2FKEFCore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masesgroup%2FKEFCore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masesgroup%2FKEFCore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/masesgroup","download_url":"https://codeload.github.com/masesgroup/KEFCore/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masesgroup%2FKEFCore/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33418550,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"online","status_checked_at":"2026-05-24T02:00:06.296Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache-kafka","c-sharp","confluent","confluent-kafka","database","dotnet","dotnet-core","dotnet-framework","dotnet-standard","entity-framework","kafka","kafka-cluster","kafka-streams","orm"],"created_at":"2024-11-24T01:52:30.683Z","updated_at":"2026-05-24T02:02:33.473Z","avatar_url":"https://github.com/masesgroup.png","language":"C#","funding_links":["https://github.com/sponsors/masesgroup"],"categories":[],"sub_categories":[],"readme":"# KEFCore: [Entity Framework Core](https://learn.microsoft.com/ef/core/) provider for [Apache Kafka™](https://kafka.apache.org/)\n\nKEFCore is the [Entity Framework Core](https://learn.microsoft.com/ef/core/) provider for [Apache Kafka™](https://kafka.apache.org/).\nBased on [KNet client-side features](https://github.com/masesgroup/KNet) it allows to use [Apache Kafka™](https://kafka.apache.org/) as a distributed database and more: KNet client-side features are also compatible with any broker that implements the Kafka wire protocol — see [Backend compatibility](#backend-compatibility) below.\n\n### Libraries and Tools\n\n|Core | Templates | Json Serialization | Avro Serialization | Protobuf Serialization |\n|:---: |:---: |:---: |:---: |:---: |\n|[![Core](https://img.shields.io/nuget/v/MASES.EntityFrameworkCore.KNet)](https://www.nuget.org/packages/MASES.EntityFrameworkCore.KNet) [![downloads](https://img.shields.io/nuget/dt/MASES.EntityFrameworkCore.KNet)](https://www.nuget.org/packages/MASES.EntityFrameworkCore.KNet) | [![Templates](https://img.shields.io/nuget/v/MASES.EntityFrameworkCore.KNet.Templates)](https://www.nuget.org/packages/MASES.EntityFrameworkCore.KNet.Templates) [![downloads](https://img.shields.io/nuget/dt/MASES.EntityFrameworkCore.KNet.Templates)](https://www.nuget.org/packages/MASES.EntityFrameworkCore.KNet.Templates) | [![Serialization](https://img.shields.io/nuget/v/MASES.EntityFrameworkCore.KNet.Serialization)](https://www.nuget.org/packages/MASES.EntityFrameworkCore.KNet.Serialization) [![downloads](https://img.shields.io/nuget/dt/MASES.EntityFrameworkCore.KNet.Serialization)](https://www.nuget.org/packages/MASES.EntityFrameworkCore.KNet.Serialization) | [![Serialization Avro](https://img.shields.io/nuget/v/MASES.EntityFrameworkCore.KNet.Serialization.Avro)](https://www.nuget.org/packages/MASES.EntityFrameworkCore.KNet.Serialization.Avro) [![downloads](https://img.shields.io/nuget/dt/MASES.EntityFrameworkCore.KNet.Serialization.Avro)](https://www.nuget.org/packages/MASES.EntityFrameworkCore.KNet.Serialization.Avro) | [![Serialization Protobuf](https://img.shields.io/nuget/v/MASES.EntityFrameworkCore.KNet.Serialization.Protobuf)](https://www.nuget.org/packages/MASES.EntityFrameworkCore.KNet.Serialization.Protobuf) [![downloads](https://img.shields.io/nuget/dt/MASES.EntityFrameworkCore.KNet.Serialization.Protobuf)](https://www.nuget.org/packages/MASES.EntityFrameworkCore.KNet.Serialization.Protobuf) |\n\n### Pipelines\n\n[![CI_BUILD](https://github.com/masesgroup/KEFCore/actions/workflows/build.yaml/badge.svg)](https://github.com/masesgroup/KEFCore/actions/workflows/build.yaml) \n[![CI_RELEASE](https://github.com/masesgroup/KEFCore/actions/workflows/release.yaml/badge.svg)](https://github.com/masesgroup/KEFCore/actions/workflows/release.yaml) \n\n### Project disclaimer\n\nKEFCore is a project curated by MASES Group and supported by the open-source community.\nIts primary scope is to support other MASES Group projects — both open-source and commercial — though it is freely available for any use. Dedicated community and commercial subscription plans are available.\nThe repository and releases may contain bugs. The release cycle depends on critical issues discovered and/or enhancement requests from this or other dependent projects.\n\nLooking for [Entity Framework Core](https://learn.microsoft.com/ef/core/) and [Apache Kafka™](https://kafka.apache.org/) expertise? MASES Group can help you design, build, deploy, and manage [Entity Framework Core](https://learn.microsoft.com/ef/core/) and [Apache Kafka™](https://kafka.apache.org/) applications. [Find out more.](src/documentation/articles/support.md)\n\n---\n\n## Scope of the project\n\nKEFCore provides an [Entity Framework Core](https://learn.microsoft.com/ef/core/) provider for [Apache Kafka™](https://kafka.apache.org/), enabling .NET applications to use Kafka topics as a data store through the standard EF Core programming model — `DbContext`, LINQ queries, and strongly-typed entities — with no Kafka-specific consumer or producer code.\n\nThe [EF Core introduction page](https://learn.microsoft.com/ef/core/) opens with this example:\n```c#\npublic class BloggingContext : DbContext\n{\n    public DbSet\u003cBlog\u003e Blogs { get; set; }\n    public DbSet\u003cPost\u003e Posts { get; set; }\n\n    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n    {\n        optionsBuilder.UseSqlServer(\n            @\"Server=(localdb)\\mssqllocaldb;Database=Blogging;Trusted_Connection=True;ConnectRetryCount=0\");\n    }\n}\n```\n\nWith KEFCore, replacing the SQL Server backend with an Apache Kafka™ cluster requires changing a single line:\n```c#\noptionsBuilder.UseKEFCore(\"my-application\", \"localhost:9092\");\n```\n\nFrom that point on, standard EF Core code works unchanged against Kafka topics:\n```c#\n// Query\nvar blogs = await db.Blogs\n    .Where(b =\u003e b.Rating \u003e 3)\n    .OrderBy(b =\u003e b.Url)\n    .ToListAsync();\n\n// Write\ndb.Blogs.Add(new Blog { Url = \"http://sample.com\" });\nawait db.SaveChangesAsync();\n```\n\nKEFCore is developed following the guidelines in the official [EntityFrameworkCore repository](https://github.com/dotnet/efcore) and the [Writing a provider](https://docs.microsoft.com/ef/core/providers/writing-a-provider) documentation published by Microsoft.\n\nCurrently the project tries to support, at our best, the [official supported Apache Kafka™ binary distribution](https://kafka.apache.org/downloads):\n\n| KEFCore | State | KNet | Apache Kafka™ | .NET | JVM™ |\n|:---:\t|:---:\t|:---:\t|:---:\t|:---:\t|:---:\t|\n| 2.6.*+ | Active | 3.2.x | 4.2.x | [![.NET 8+](https://img.shields.io/badge/.NET-8%2B-purple)](https://dotnet.microsoft.com/) | [![Java 17+](https://img.shields.io/badge/Java-17%2B-blue)](https://www.oracle.com/java/) |\n| 2.5.* | Deprecated | 2.9.x | 3.9.x | [![.NET 8+](https://img.shields.io/badge/.NET-8%2B-purple)](https://dotnet.microsoft.com/) | [![Java 11+](https://img.shields.io/badge/Java-11%2B-blue)](https://www.oracle.com/java/) |\n\n---\n\n## Backend compatibility\n\n[Entity Framework Core](https://learn.microsoft.com/ef/core/) provider for [Apache Kafka™](https://kafka.apache.org/) uses the official Apache Kafka™ Java client packages directly through [KNet client-side features](https://github.com/masesgroup/KNet). This architecture has a direct impact on backend compatibility.\n\n**Client-side features** — Producer, Consumer, Admin Client, Kafka Streams, KNet Streams SDK, KNet Connect SDK, KNetPS scriptable cmdlets — communicate with the broker exclusively through the Kafka wire protocol and are therefore compatible with **any broker that implements it**, not only Apache Kafka™ itself.\n\nExamples of compatible brokers: [Redpanda](https://redpanda.com/), [Amazon MSK](https://aws.amazon.com/msk/), [Confluent Platform / Cloud](https://www.confluent.io/), [Aiven for Apache Kafka™](https://aiven.io/kafka), [IBM Event Streams](https://www.ibm.com/products/event-streams), [WarpStream](https://www.warpstream.com/), [AutoMQ](https://www.automq.com/), and others.\n\nSee [Supported Backends](src/documentation/articles/backends.md) for the full compatibility matrix covering all KNet feature areas.\n\n---\n\n## Community and Contribution\n\nIf you find [Entity Framework Core](https://learn.microsoft.com/ef/core/) provider for [Apache Kafka™](https://kafka.apache.org/) useful:\n\n* Leave a ⭐ on the repository\n* Open [issues](https://github.com/masesgroup/KEFCore/issues) to report bugs 🐛 or request features\n* Submit Pull Requests to improve the project\n\nThis project adheres to the Contributor [Covenant code of conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to coc_reporting@masesgroup.com.\n\n---\n\n## Summary\n\n* [Getting started](src/documentation/articles/gettingstarted.md)\n* [How it works](src/documentation/articles/howitworks.md)\n* [Supported backends](src/documentation/articles/backends.md)\n* [Usage](src/documentation/articles/usage.md)\n* [Use cases](src/documentation/articles/usecases.md)\n* [Templates usage](src/documentation/articles/usageTemplates.md)\n* [Options](src/documentation/articles/options.md)\n* [Conventions](src/documentation/articles/conventions.md)\n* [Serialization](src/documentation/articles/serialization.md)\n* [Schema migration](src/documentation/articles/migration.md)\n* [Performance tips](src/documentation/articles/performancetips.md)\n* [Troubleshooting](src/documentation/articles/troubleshooting.md)\n* [External application](src/documentation/articles/externalapplication.md)\n* [Roadmap](src/documentation/articles/roadmap.md)\n* [Current state](src/documentation/articles/currentstate.md)\n* [KEFCoreDbContext](src/documentation/articles/kefcoredbcontext.md)\n\n---\n\n## Runtime engine\n\nKEFCore uses [KNet](https://github.com/masesgroup/KNet), and indeed [JCOBridge](https://www.jcobridge.com) with its [features](https://www.jcobridge.com/features/), to obtain many benefits:\n* **Cyber-security**:\n  * [JVM™](https://en.wikipedia.org/wiki/Java_virtual_machine) and [CLR, or CoreCLR,](https://en.wikipedia.org/wiki/Common_Language_Runtime) runs in the same process, but are insulated from each other;\n  * JCOBridge does not make any code injection into JVM™;\n  * JCOBridge does not use any other communication mechanism than JNI;\n  * .NET (CLR) inherently inherits the cyber-security levels of running JVM™ and Apache Kafka™; \n* **Direct access the JVM™ from any .NET application**: \n  * Any Java/Scala class behind Apache Kafka™ can be directly managed: Consumer, Producer, Administration, Streams, Server-side, and so on;\n  * No need to learn new APIs: we try to expose the same APIs in C# style;\n  * No extra validation cycle on protocol and functionality: bug fix, improvements, new features are immediately available;\n  * Documentation is shared.\n\n\u003e [!NOTE]\n\u003e [JCOBridge 2.6.\\*](https://www.jcobridge.com) can be used for free without any obligations. A commercial license must be purchased — or the software uninstalled — if you derive direct or indirect income from its usage.\n\n### JCOBridge resources\n\nHave a look at the following JCOBridge resources:\n\n|JCOBridge | 2.5.* series | 2.6.* series |\n|:---:\t|:---:\t|:---:\t|\n|KEFCore | \u003e 1.0.* series | \u003e 2.6.1 series |\n|Release notes|[Link](https://www.jcobridge.com/release-notes/)| [Link](https://www.jcobridge.com/release-notes/)|\n|Community Edition|[Conditions](https://www.jcobridge.com/pricing-25/)|[Conditions](https://www.jcobridge.com/pricing-26/)|\n|Commercial Edition|[Information](https://www.jcobridge.com/pricing-25/)|[Information](https://www.jcobridge.com/pricing-26/)|\n\nLatest release: [![JCOBridge nuget](https://img.shields.io/nuget/v/MASES.JCOBridge)](https://www.nuget.org/packages/MASES.JCOBridge)\n\n---\n\nKAFKA is a registered trademark of The Apache Software Foundation. KEFCore has no affiliation with and is not endorsed by The Apache Software Foundation.\nMicrosoft is a registered trademark of Microsoft Corporation.\nEntityFramework is a registered trademark of Microsoft Corporation.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasesgroup%2Fkefcore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmasesgroup%2Fkefcore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasesgroup%2Fkefcore/lists"}