Rystem.RepositoryFramework allows you to use correctly concepts like repository pattern, CQRS and DDD. You have interfaces for your domains, auto-generated api, auto-generated HttpClient to simplify connection "api to front-end", a functionality for auto-population in memory of your models, a functionality to simulate exceptions and waiting time from external sources to improve your implementation/business test and load test.
$ dotnet add package Rystem.RepositoryFramework.Infrastructure.Azure.Storage.TableExample from unit test with a business integration too.
services
.AddRepository<SuperCar, Guid>(settings =>
{
settings
.WithTableStorage(x => x.ConnectionString = configuration["ConnectionString:Storage"])
.WithPartitionKey(x => x.Id, x => x)
.WithRowKey(x => x.Name)
.WithTimestamp(x => x.Time)
.WithTableStorageKeyReader<Car2KeyStorageReader>();
settings
.AddBusiness()
.AddBusinessBeforeInsert<SuperCarBeforeInsertBusiness>()
.AddBusinessBeforeInsert<SuperCarBeforeInsertBusiness2>();
});
You found the IRepository<SuperCar, Guid> in DI to play with it.
With automated api, you may have the api implemented with your tablestorage integration. You need only to add the AddApiFromRepositoryFramework and UseApiForRepositoryFramework
builder.Services.AddApiFromRepositoryFramework()
.WithDescriptiveName("Repository Api")
.WithPath(Path)
.WithSwagger()
.WithVersion(Version)
.WithDocumentation()
.WithDefaultCors("http://example.com");
var app = builder.Build();
app.UseApiForRepositoryFramework()
.WithNoAuthorization();