CleanCodeJN.Repository.EntityFramework 2.0.0

dotnet add package CleanCodeJN.Repository.EntityFramework --version 2.0.0
                    
NuGet\Install-Package CleanCodeJN.Repository.EntityFramework -Version 2.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="CleanCodeJN.Repository.EntityFramework" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CleanCodeJN.Repository.EntityFramework" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="CleanCodeJN.Repository.EntityFramework" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add CleanCodeJN.Repository.EntityFramework --version 2.0.0
                    
#r "nuget: CleanCodeJN.Repository.EntityFramework, 2.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.
#addin nuget:?package=CleanCodeJN.Repository.EntityFramework&version=2.0.0
                    
Install CleanCodeJN.Repository.EntityFramework as a Cake Addin
#tool nuget:?package=CleanCodeJN.Repository.EntityFramework&version=2.0.0
                    
Install CleanCodeJN.Repository.EntityFramework as a Cake Tool

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 latest .NET 8.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

GitHub Full Sample

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on CleanCodeJN.Repository.EntityFramework:

Package Downloads
CleanCodeJN.GenericApis

This CleanCodeJN package streamlines the development of web APIs in .NET applications by providing a robust framework for CRUD operations and facilitating the implementation of complex business logic in a clean and maintainable manner.

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.

Version Downloads Last updated
2.0.0 154 2 months ago
1.1.7 186 4 months ago
1.1.6 270 6 months ago
1.1.5 93 7 months ago
1.1.4 180 7 months ago
1.1.3 341 5/7/2024
1.1.2 131 5/7/2024
1.1.1 180 5/2/2024
1.1.0 104 5/2/2024
1.0.2 105 5/1/2024
1.0.1 111 5/1/2024
1.0.0 117 5/1/2024

Update to .NET 9.0.