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();
}
...
}