CleanCodeJN.Repository.EntityFramework
2.0.1
dotnet add package CleanCodeJN.Repository.EntityFramework --version 2.0.1
NuGet\Install-Package CleanCodeJN.Repository.EntityFramework -Version 2.0.1
<PackageReference Include="CleanCodeJN.Repository.EntityFramework" Version="2.0.1" />
<PackageVersion Include="CleanCodeJN.Repository.EntityFramework" Version="2.0.1" />
<PackageReference Include="CleanCodeJN.Repository.EntityFramework" />
paket add CleanCodeJN.Repository.EntityFramework --version 2.0.1
#r "nuget: CleanCodeJN.Repository.EntityFramework, 2.0.1"
#:package CleanCodeJN.Repository.EntityFramework@2.0.1
#addin nuget:?package=CleanCodeJN.Repository.EntityFramework&version=2.0.1
#tool nuget:?package=CleanCodeJN.Repository.EntityFramework&version=2.0.1
Generic Repository Implementation
Repository Abstraction for Entity Framework
This generic Repository implementation for Entity Framework abstracts completely all EF-References from your business layer in a domain driven design manner.
Features
- Ready to use in seconds
- Abstracts all EF specific Code out of your business layer
- Easy to mock and test
- On .NET 9.0
How to use
- Add IEntity<T> interfaces to your domain classes
- Add IDataContext Interface to your DBContext class
- Use Extension RegisterRepositories() in your startup class or program.cs
- Inject IRepository<T> in your business layer
- Just use It
Step by step explanation
Add IEntity<T> interfaces to your domain classes:
public class Customer : IEntity<int>
{
public int Id { get; set; }
}
Add IDataContext Interface to your DBContext class:
public partial class MyDbContext : DbContext, IDataContext
{
}
Use Extension RegisterDbContextAndRepositories() in your startup class or program.cs:
// Just register generic repositories and your dbContext which has the IDataContext marker interface
builder.Services.RegisterDbContextAndRepositories<MyDbContext>();
Inject IRepository<TEntity, TKey> (or IIntRepository, IStringRepository, IGuidRepository, ILongRepository) in your business layer:
public class MyService(IRepository<Customer, int> repository)
{
}
Just use it:
List<customer> customerWhoHavePayed = repository
.Query(asNoTracking: true, asSplitQuery: true, includes: x => x.Invoices)
.Where(x => x.Invoice.IsPayed)
.ToList()
Sample Code
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. 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. |
-
net9.0
- Azure.Identity (>= 1.13.2)
- Microsoft.EntityFrameworkCore (>= 9.0.2)
- Microsoft.EntityFrameworkCore.SqlServer (>= 9.0.2)
- Microsoft.Extensions.Caching.Memory (>= 9.0.2)
- System.Formats.Asn1 (>= 9.0.2)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on CleanCodeJN.Repository.EntityFramework:
| Package | Downloads |
|---|---|
|
CleanCodeJN.GenericApis
Build production-ready .NET Web APIs in minutes, not days. CleanCodeJN.GenericApis is the ultimate full-stack API framework combining REST (Minimal APIs + MVC Controllers), GraphQL (HotChocolate), and MCP (Model Context Protocol) — all from a single generic setup. Powered by MediatR CQRS, AutoMapper, FluentValidation, and Entity Framework, it eliminates boilerplate for GET, GET by ID, POST, PUT, PATCH, and DELETE operations across every layer. Built-in pipeline behaviors deliver transparent caching and structured logging out of the box. The integrated AI Proxy streams responses from Anthropic Claude directly through your API, while the MCP server automatically exposes all your CRUD endpoints as discoverable tools for AI assistants like Claude, Cursor, and Copilot. Designed around the Integration Operation Segregation Principle (IOSP) for clean, testable, and maintainable business logic — at any scale. |
|
|
CleanCodeJN.GenericApis.ServiceBusConsumer
This CleanCodeJN package for Service Bus simplifies the development of asynchronous microservices by providing a framework that leverages the power of MediatR and IOSP to consume service bus events from topics and execute commands to process these events. |
GitHub repositories
This package is not used by any popular GitHub repositories.
BugFix: Call Update() instead of State = Modified.