Wryco.EntityFirst


An entity-first design pattern for asp.net core.

Why?

Free, fast, easy, modular, hackable. Extend provided base classes for faster development.

Install

dotnet add package Wryco.EFirst --version 1.0.1

Example

"Create an entity."

Entity

public class Device: BaseIEntity
{
    public Device()
    {
        CreatedAt = DateTime.UtcNow;
        UpdatedAt = DateTime.UtcNow;
    }

    // Main
    public int Id { get; set; }
    public required string Name { get; set; }

    // Meta
    public DateTime CreatedAt { get; set; } = DateTime.Now;
    public DateTime UpdatedAt { get; set; } = DateTime.Now;
    public DateTime LastActiveAt { get; set; } = DateTime.Now;
}
            
"Reference it in your database context."

Context

public class ApplicationDbContext : BaseDbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options): base(options){}
    public DbSet<Device> Device { get; set; } = null!;
}
            
"Give it a repository."

Repository

public class DeviceRepository: BaseRepository<Device>
{
    public DeviceRepository(ApplicationDbContext context) : base(context) { }
}
            
"Add the typical program.cs additions."

Program.cs

(...)
builder.Services.AddSharedInfrastructure<ApplicationDbContext>(DBConnectionString);
builder.Services.AddScoped<DeviceRepository>();
(...)
            
"And make it all accessible via API."

Controller

[ApiController]
[Route("api/device")]
public class DeviceController : BaseController<DeviceRepository, Device>
{
    public DeviceController(DeviceRepository repository) : base(repository) { }
}
            

"That's it."

The above is all it takes to quickly scaffold a barebones API detailing:

Method Endpoint Action Description
GET /api/device/ index gets all devices
GET /api/device/id show gets specific device
POST /api/device create creates a new device
PUT /api/device update updates a device
DEL /api/device delete deletes a device