CleanCodeJN.Repository.EntityFramework
1.1.6
dotnet add package CleanCodeJN.Repository.EntityFramework --version 1.1.6
NuGet\Install-Package CleanCodeJN.Repository.EntityFramework -Version 1.1.6
<PackageReference Include="CleanCodeJN.Repository.EntityFramework" Version="1.1.6" />
paket add CleanCodeJN.Repository.EntityFramework --version 1.1.6
#r "nuget: CleanCodeJN.Repository.EntityFramework, 1.1.6"
// Install CleanCodeJN.Repository.EntityFramework as a Cake Addin #addin nuget:?package=CleanCodeJN.Repository.EntityFramework&version=1.1.6 // Install CleanCodeJN.Repository.EntityFramework as a Cake Tool #tool nuget:?package=CleanCodeJN.Repository.EntityFramework&version=1.1.6
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
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. |
-
net8.0
- Azure.Identity (>= 1.12.0)
- Microsoft.EntityFrameworkCore (>= 8.0.8)
- Microsoft.EntityFrameworkCore.SqlServer (>= 8.0.8)
NuGet packages (1)
Showing the top 1 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. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Added: asNoTracking, ignoreQueryFilters, asSplitQuery as optional Parameter to Query() method.