Skip to main content

Entity Framework Core (Relational)

TransactionalBox is not responsible for configuring Entity Framework Core. All it needs is to use the already existing DbContext and add the model to the ModelBuilder.

Transactional box add messages to your DbContext. You need to invoke SaveChangesAsync() on DbContext.

warning

Remember, all changes need to be in one transaction. Using ExecuteUpdate or ExecuteDelete you need to create own transaction.

tip

Use AddDbContexPoll when configuring Entity Framework Core.

builder.Services.AddDbContextPool<SampleDbContext>(x => x.Use...(connectionString));

Install package

dotnet add package TransactionalBox.EntityFrameworkCore

Outbox

Register Entity Framework Core as outbox storage

builder.Services.AddTransactionalBox(x =>
{
x.AddOutbox(storage => storage.UseEntityFrameworkCore<SampleDbContext>());
});

Add Outbox to ModelBuilder

public class SampleDbContext : DbContext
{
...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.AddOutbox();
}
...
}

Inbox

Register Entity Framework Core as inbox storage

builder.Services.AddTransactionalBox(x =>
{
x.AddInbox(storage => storage.UseEntityFrameworkCore<SampleDbContext>());
});

Add Inbox to ModelBuilder

public class SampleDbContext : DbContext
{
...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.AddInbox();
}
...
}